/*延时可用定时器、定时器中断、延时函数*/
#include <reg52.h> //头文件
#include <intrins.h> //添加此头文件,为了用到循环移动函数
#define uint unsigned int
#define uchar unsigned char
uchar ledbuff=0,con=0;
void timer0(); //定时器0初始化函数声明
void main()
{
//temp=0xfe; //先最右第一个灯亮,然后左移
ledbuff=0x7f; //先最左第一个灯亮,然后右移
P2=ledbuff;
timer0(); //调用定时器0初始化函数(设置初值)
while(1)
{
if(con==20) //进入1000ms就是1秒
{
con=0; //次数清零
//temp=_crol_(temp,1);
ledbuff=_cror_(ledbuff,1); //循环右移函数的调用,每次移动一位
P2=ledbuff; //新值赋给P2口
}
}
}
void timer0() //定时器T0初始化函数
{
TMOD = 0x01; //选择定时器T0,(选定时器1时为TMOD=0x10)
TH0 = 0x3c; //赋初值15536
TL0 = 0xb0;
EA = 1; //CPU开总中断
ET0 = 1; //开启定时器T0
TR0 = 1; //启动定时器T0
}
void Timer0Interrupt() interrupt 1 //中断服务程序
{
TH0 = 0x3c;
TL0 = 0xb0;
con++;
}
#include <reg52.h> //头文件
#include <intrins.h> //添加此头文件,为了用到循环移动函数
#define uint unsigned int
#define uchar unsigned char
uchar ledbuff=0,con=0;
void timer0(); //定时器0初始化函数声明
void main()
{
//temp=0xfe; //先最右第一个灯亮,然后左移
ledbuff=0x7f; //先最左第一个灯亮,然后右移
P2=ledbuff;
timer0(); //调用定时器0初始化函数(设置初值)
while(1)
{
if(con==20) //进入1000ms就是1秒
{
con=0; //次数清零
//temp=_crol_(temp,1);
ledbuff=_cror_(ledbuff,1); //循环右移函数的调用,每次移动一位
P2=ledbuff; //新值赋给P2口
}
}
}
void timer0() //定时器T0初始化函数
{
TMOD = 0x01; //选择定时器T0,(选定时器1时为TMOD=0x10)
TH0 = 0x3c; //赋初值15536
TL0 = 0xb0;
EA = 1; //CPU开总中断
ET0 = 1; //开启定时器T0
TR0 = 1; //启动定时器T0
}
void Timer0Interrupt() interrupt 1 //中断服务程序
{
TH0 = 0x3c;
TL0 = 0xb0;
con++;
}