大致这样改,嗯参考:
- #include "./ai8051u.h"
-
-
- // 定义P2和P3的各个引脚
- sbit P20 = P2^0;
- sbit P21 = P2^1;
- sbit P22 = P2^2;
- sbit P23 = P2^3;
- sbit P24 = P2^4;
- sbit P25 = P2^5;
- sbit P26 = P2^6;
- sbit P27 = P2^7;
-
- sbit StartKey = P3^3; // 定义P33为开始键
- unsigned char timeCnt;
- unsigned char lastTimeCnt;
-
- void Timer0_Init(void) //10毫秒@24.000MHz
- {
- AUXR &= 0x7F; //定时器时钟12T模式
- TMOD &= 0xF0; //设置定时器模式
- TMOD |= 0x01; //设置定时器模式
- TL0 = 0xE0; //设置定时初始值
- TH0 = 0xB1; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- timeCnt = 0;
- ET0 = 1;
- }
-
-
-
- // 定时器0中断服务程序
- void Timer0_ISR(void) interrupt 1
- {
- //TF0 = 0; //清除TF0标志
- TL0 = 0xE0; //设置定时初始值
- TH0 = 0xB1; //设置定时初始值
-
- timeCnt++;
-
- if(timeCnt>=100){
- ET0 = 0;
- }
- }
- void tiemrSleep(){
- Timer0_Init();
- while(timeCnt<100);
- }
-
- // 检测按键是否按下,返回1表示按下,0表示未按下
- bit CheckStartKey()
- {
- if(StartKey == 0) // 检测到低电平表示按键按下
- {
- StartKey = 1; // 设置为高电平,准备检测按键
- tiemrSleep(); // 再次使用定时器消抖
- if(StartKey == 0) // 确认按键是否仍然按下
- return 1; // 按下返回1
- }
- return 0; // 未按下返回0
- }
-
- void main(void)
- {
- WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
- //提高访问XRAM速度
-
- P2M1 = 0x00; P2M0 = 0x00; // 设置P2为推挽输出
- P3M1 = 0x00; P3M0 = 0x00; // 设置P3为输入模式
-
- P2=0xFF;
- lastTimeCnt = 0;
- timeCnt = 0;
- Timer0_Init();
- // ET0 = 1;
- EA=1;
-
-
- while(1)
- {
- if(CheckStartKey()) // 检测到开始键按下
- {
-
- {
- // 无限循环
- P20 = 0; P21 = 1; P22 = 1; P23 = 1; P24 = 1; P25 = 1; P26 = 1; P27 = 1; tiemrSleep(); // 只点亮P2.0,延时1秒
- P20 = 1; P21 = 0; P22 = 1; P23 = 1; P24 = 1; P25 = 1; P26 = 1; P27 = 1; tiemrSleep(); // 只点亮P2.1,延时1秒
- P20 = 1; P21 = 1; P22 = 0; P23 = 1; P24 = 1; P25 = 1; P26 = 1; P27 = 1; tiemrSleep(); // 只点亮P2.2,延时1秒
- P20 = 1; P21 = 1; P22 = 1; P23 = 0; P24 = 1; P25 = 1; P26 = 1; P27 = 1; tiemrSleep(); // 只点亮P2.3,延时1秒
- P20 = 1; P21 = 1; P22 = 1; P23 = 1; P24 = 0; P25 = 1; P26 = 1; P27 = 1; tiemrSleep(); // 只点亮P2.4,延时1秒
- P20 = 1; P21 = 1; P22 = 1; P23 = 1; P24 = 1; P25 = 0; P26 = 1; P27 = 1; tiemrSleep(); // 只点亮P2.5,延时1秒
- P20 = 1; P21 = 1; P22 = 1; P23 = 1; P24 = 1; P25 = 1; P26 = 0; P27 = 1; tiemrSleep(); // 只点亮P2.6,延时1秒
- P20 = 1; P21 = 1; P22 = 1; P23 = 1; P24 = 1; P25 = 1; P26 = 1; P27 = 0; tiemrSleep(); // 只点亮P2.7,延时1秒
- P20 = 1; P21 = 1; P22 = 1; P23 = 1; P24 = 1; P25 = 1; P26 = 1; P27 = 1; // 熄灭所有LED
- }
- }
- }
- }
复制代码
|