测试程序如下:
- #include <reg52.h>
- #include <intrins.h>
- sbit key = P3^3; //进入掉电模式的按键
- /*************************************
- 函数名称:delay
- 函数功能:延时一段时间
- **************************************/
- void delay()
- {
- unsigned int i;
- for(i=0;i<30000;i++) ;
- }
- /*************************************
- 函数名称:delay20ms
- 函数功能:延时20ms
- **************************************/
- void delay20ms(void)
- {
- unsigned char i,j;
- for(i=0;i<100;i++)
- for(j=0;j<60;j++);
- }
- /*************************************
- 函数名称:init
- 函数功能:初始化程序
- **************************************/
- void init()
- {
- EA=1; //开中断总允许
- EX0=1; //开外中断1
- IT0=1; //外中断的下降沿触发
- }
- /*************************************
- 函数名称:keytest
- 函数功能:键盘程序,按下键进入掉电模式
- **************************************/
- void keytest()
- {
- if(key==0)
- {
- delay20ms();
- if(key==0)
- {
- PCON=PCON|0x02; //进入掉电模式
- }
- while(!key);
- }
- }
- /*************************************
- 函数名称:main
- 函数功能:主函数
- **************************************/
- void main()
- {unsigned char aa = 0xfe;
- init();
- while(1)
- {//实现流水灯
- P0=aa;
- aa= _crol_(aa,1);
- delay();
- keytest(); //键盘扫描
- }
- }
- /*************************************
- 函数名称:Int0
- 函数功能:中断服务程序
- **************************************/
- void Int0() interrupt 0 using 1
- {
- P0=0x00; //灯全亮
- delay();
- delay();
- delay();
- }
|