第八集
启动定时器0的中断100ms进一次中断
在中断中对tim1000ms,tim500ms加一
每加一次就是100ms当tim500ms加到5就是500ms当tim1000ms加到10就是1s
然后就进行一次IO翻转
void gpio_Init(void)
{
P0M0 = 0x00; P0M1 = 0x00; //设置P0口为准双向口模式
P1M0 = 0x00; P1M1 = 0x00; //设置P1口为准双向口模式
P2M0 = 0x00; P2M1 = 0x00; //设置P2口为准双向口模式
P3M0 = 0x00; P3M1 = 0x00; //设置P3口为准双向口模式
P4M0 = 0x00; P4M1 = 0x00; //设置P4口为准双向口模式
P5M0 = 0x00; P5M1 = 0x00; //设置P5口为准双向口模式
P6M0 = 0x00; P6M1 = 0x00; //设置P6口为准双向口模式
P7M0 = 0x00; P7M1 = 0x00; //设置P7口为准双向口模式
//上面的将所有I/O口都初始化为准双向口工作模式的程序,
}
void Timer0_Init(void)
{
TM0PS = 0x05; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xFC; //设置定时初始值
TH0 = 0x26; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}
int tim1000ms;
int tim500ms;
void main(void)
{
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR
WTST = 0; //设置取程序代码等待时间,
//赋值为 0表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata速度,
//赋值为 0表示用最快速度访问,不增加额外的等待时间
gpio_Init();
Timer0_Init(); //可以使用AIapp-ISP软件的“I/O口配置工具”来生成。
EA=1;
while(1)
{
}
}
int c=0;
void Timer0_Isr(void) interrupt 1
{
tim1000ms++;tim500ms++;
if(tim1000ms==10)
{
P20!=P20;tim1000ms=0;
}
if(tim500ms==10)
{
P22!=P22;tim500ms=0;
}
if(c==0)
{
P21=0;
c=1;
}
else
{
P21=1;
c=0;
}
}
哈喽,小伙伴,需要您将所有打卡心得汇总在一篇帖子里哦,不需要每一集都另开新帖的{:ciya:}
页:
[1]