📄 lx_lxq.bak
字号:
#include <at89s52.h>
#define uchar unsigned char
#define uint unsigned int
#define xs 79
uint data time_ns;
uchar time_n10s,time_n5s;
bit red_green; //
uint time_500ms;
sbit K1 = P1^2; //闪光灯1的控制信号
sbit K2 = P1^3; //闪光灯2的控制信号
sbit LED1 = P1^0; //指示灯1的控制信号
sbit LED2 = P1^1; //指示灯2的控制信号
sbit LED3 = P1^4; //指示灯3的控制信号
sbit LED4 = P1^5; //指示灯4的控制信号
#define LED1_ON LED1 = 0
#define LED1_OFF LED1 = 1
#define LED2_ON LED2 = 0
#define LED2_OFF LED2 = 1
//#define time_ns P2
#define K1_ON K1 = 0
#define K2_ON K2 = 0
#define K1_OFF K1 = 1
#define K2_OFF K2 = 1
void main(void){
ET0 = 1; //定时器0允许中断
SP = 0x70; //
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
red_green = 1;
TH0 = 0x06; //定时器0设置初值
TL0 = 0x06; //
TR0 = 1; //定时器0不工作
TMOD = 0x02; //定时器工作在第2种模式
EA = 1; //开中断总允许
LED1_ON;
LED3 = 0;
K1_ON;
while(1){
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
PCON = 0x01;
}
}
void time_0(void) interrupt 1{
if(time_500ms++ == 500){
time_500ms = 0;
LED3 = !LED3;
}
// LED3 = !LED3;
if(red_green){
if(time_ns++ == 40000){ //10S为一个单位
time_ns = 0;
if(++time_n10s == 18){
time_n10s = 0;
LED1_OFF;
K1_OFF;
red_green = 0;
}
}
}
else{
if(time_ns++ == 20000){ //5S为一个单位
time_ns = 0;
if(++time_n5s == 3){
time_n5s = 0;
LED1_ON;
K1_ON;
red_green = 1;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -