本文作者:qiaoqingyi

门禁编程(门禁编程说明书)

qiaoqingyi 03-27 163

  //***************FileName: LED.C***************//

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

  #includeio8535v.h //头文件,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;i9;i++) //依次点亮LED1~LED8

  {Horse(i);

  DelayMs(1000);

  WDTCR=0x1f;

  WDTCR=WDTCR0xf7;} //点亮时间约1秒

  for(i=9;i0;i--) //依次熄灭LED8~LED1

  {Horse(i);

  DelayMs(1000);} //熄灭时间约1秒

  PORTA=0xff;

  DelayMs(1000);

  }

  }

  原文链接:https://www.eeworld.com.cn/mcu/article_2016102530851.html

阅读
分享