赞
踩
- #include <STC12C5A60S2.h>
-
-
- sbit LED1 = P2 ^ 4;
- sbit LED2 = P2 ^ 5;
- sbit LED3 = P2 ^ 6;
- sbit LED4 = P2 ^ 7;
-
- sbit BEEP = P1 ^ 0; //置1则响
-
- sbit KEY1 = P3 ^ 2;
- sbit KEY2 = P3 ^ 4;
-
-
- void delay_2ms(unsigned long int time) //2ms的基
- {
- unsigned long int i;
- for (i = 0; i < time * 100; i++);
- }
-
- void ISR_Init()
- {
- IT0 = 0; //设置中断触发方式:0——低电平触发 1——下降沿触发 (测试方法:长按效果)
-
- EX0 = 1; //打开外部中断
- EA = 1; //打开总中断
- }
-
- void INT0_ISR() interrupt 0
- {
- EX0 = 0; //关闭外部中断
-
- delay_2ms(5);
- if(KEY1==0)
- {
- unsigned char i;
- for(i=0;i<3;i++)
- {
- BEEP=1;
- delay_2ms(250);
- BEEP=0;
- delay_2ms(250);
- }
- }
-
- EX0 = 1; //打开外部中断
- }
-
- //----------------------------------------------------------
-
- void main()
- {
- BEEP=0;
- ISR_Init(); // 中断初始化…代码略去
-
- while(1)
- {
- delay_2ms(250);
- LED1=0;LED2=1;LED3=1;LED4=1;
-
- delay_2ms(250);
- LED1=1;LED2=0;LED3=1;LED4=1;
-
- delay_2ms(250);
- LED1=1;LED2=1;LED3=0;LED4=1;
-
- delay_2ms(250);
- LED1=1;LED2=1;LED3=1;LED4=0;
- }
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- LED1 BIT P2.4
- LED2 BIT P2.5
- LED3 BIT P2.6
- LED4 BIT P2.7
-
- KEY1 BIT P3.2
- BEEP BIT P1.0
-
- ;-----------------------------------------------------------------------------------------------------
- KEY1_State DATA 69H ; 将地址69H用伪指令命名为KEY1_State
- TEMPVAL_1 DATA 70H
- DelayTimes_100MS EQU 6FH ; 将地址6FH用伪指令命名为DelayTimes_100MS
- ;----------------------------------------------------------------------------------------------------
-
- ORG 0000H
- LJMP MAIN
- ORG 0003H
- LJMP INT0_ISR
-
- ORG 0100H
- MAIN:
- LCALL ISR_INIT
- CLR BEEP
- LOOP:
- CLR LED1
- SETB LED2
- SETB LED3
- SETB LED4
- MOV DelayTimes_100MS,#5
- LCALL Delay100MS
-
- SETB LED1
- CLR LED2
- SETB LED3
- SETB LED4
- MOV DelayTimes_100MS,#5
- LCALL Delay100MS
-
- SETB LED1
- SETB LED2
- CLR LED3
- SETB LED4
- MOV DelayTimes_100MS,#5
- LCALL Delay100MS
-
- SETB LED1
- SETB LED2
- SETB LED3
- CLR LED4
- MOV DelayTimes_100MS,#5
- LCALL Delay100MS
-
- AJMP LOOP
-
- ;--------------------------------------------------------------------------------------------------------
-
-
- //中断服务函数
- INT0_ISR:
- PUSH 04H
- PUSH 05H
- PUSH 06H
- PUSH 07H
-
- MOV TEMPVAL_1,#0
- BEEPSTART:
- SETB BEEP
- MOV DelayTimes_100MS,#5
- LCALL Delay100MS
- CLR BEEP
- MOV DelayTimes_100MS,#5
- LCALL Delay100MS
-
- INC TEMPVAL_1
-
- MOV A,TEMPVAL_1
- CJNE A,#3,BEEPSTART
-
- POP 07H
- POP 06H
- POP 05H
- POP 04H
- RETI
-
-
- //中断初始化函数
- ISR_INIT:
- SETB EA
- CLR IT0 ;0——低电平触发 1——下降沿触发
- SETB EX0
- RET
-
-
- //延时函数
- Delay100MS:
- MOV R7,DelayTimes_100MS
- Delay100MS_1:
- MOV R6,#10
- Delay100MS_2:
- MOV R5,#150
- Delay100MS_3:
- MOV R4,#200
- Delay100MS_4:
- DJNZ R4, Delay100MS_4
- DJNZ R5, Delay100MS_3
- DJNZ R6, Delay100MS_2
- DJNZ R7, Delay100MS_1
- RET ;子程序返回
-
- END
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。