×
单片机 > 单片机程序设计 > 详情

看门狗定时器的c语言编程

发布时间:2020-08-21 发布时间:
|
//***************FileName:LED.C***************//

//**************ICCAVR V6.30编译**************//

#include            //头文件,AT90S8535单片机的寄存器定义
#define uchar unsigned char    //数据类型说明
#define uint unsigned int     //数据类型说明

void DelayMs(uint i)           //Ms级延时函数,参数i:延时时间
{uint j;
for(;i!=0;i--)
{for(j=2000;j!=0;j--) {;}}
}

void Horse(uchar i)            //跑马灯程序,通过步判断点亮相应的LED
{switch(i)                     //高电平点亮LED
{case 1:PORTA=0xfe;break;     //1111 1110B 点亮LED1
case 2:PORTA=0xfc;break;     //1111 1100B 点亮LED1~LED2
case 3:PORTA=0xf8;break;     //1111 1000B 点亮LED1~LED3
case 4:PORTA=0xf0;break;     //1111 0000B 点亮LED1~LED4
case 5:PORTA=0xe0;break;     //1110 0000B 点亮LED1~LED5
case 6:PORTA=0xc0;break;     //1100 0000B 点亮LED1~LED6
case 7:PORTA=0x80;break;     //1000 0000B 点亮LED1~LED7
case 8:PORTA=0x00;break;     //0000 0000B 点亮LED1~LED8
default:break;}
}

void main(void)               
{uchar i;
DDRA=0xff;                    //端口设置:PA口设置为推挽1输出
PORTA=0xff;
PORTA=0x00;                   //PORTA初始值为0,灭掉所有的LED      
DelayMs(1000);
WDTCR=0x0f;
while(1)                      //程序无条件执行
{ for(i=1;i<9;i++)           //依次点亮LED1~LED8
      {Horse(i);
    DelayMs(1000);
    WDTCR=0x1f;
    WDTCR=WDTCR&0xf7;}         //点亮时间约1秒
for(i=9;i>0;i--)          //依次熄灭LED8~LED1
      {Horse(i);
    DelayMs(1000);}         //熄灭时间约1秒
PORTA=0xff;
    DelayMs(1000);
}
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计