📄 jie.c
字号:
#include <reg922.h>
#include <intrins.h>
#define uchar unsigned char
sbit BB=P1^2; //测试灯
sbit KEY=P0^0; //键盘中断
sbit OUT=P0^1; //动作键
sbit LED=P0^2;
sbit RXD=P1^1;
bit sing;
const uchar data BRGR1_DATA=0x00; //波特率设为1200bit/s
const uchar data BRGR0_DATA=0x0e;
void delay(uchar i);
void UART_Ini();
void INT_Ini();
void KEY_Ini();
void LedFlash(uchar i);
void BBFlash(uchar i);
void main()
{
INT_Ini(); //端口初始化:P0,P1口均设为准双向口
DIVM=100; //分频
BBFlash(200);
delay(1);
BBFlash(200);
delay(1);
BBFlash(200);
UART_Ini(); //串口初始化:
OUT=1; ////////////////////////
KEY_Ini(); //键盘中断设置
EA=1; //开总中断
sing=1;
while(1)
{
WDCON=0xe0; //关闭看门狗WDRUN,完全掉电PCON=0x23;没有关WDT
_nop_();
_nop_();
_nop_();
_nop_();
AUXR1|=0x80; //置位CLKLP以降低功耗
PCONA=0xff;
if(sing==1)
{
// INT_Ini();
sing=0;
PCON|=0x03;
}
}
}
void key_int() interrupt 7
{
EA=0;
EKBI=0;
PCONA=0xfd;
while(!RI);
RI=0;
if(SBUF==0x55)
{
OUT=0;
BBFlash(200);
delay(3);
}
if(SBUF==0xAA)
{
OUT=1;
BBFlash(200);
delay(1);
BBFlash(200);
delay(3);
}
// KBCON=0x02; //相同电平产生中断
KBCON=0x00;
EKBI=1;
EA=1;
sing=1;
}
void delay(uchar i)
{
uchar k;
for(;i;i--)
{
for(k=0;k<250;k++) //延时1毫秒
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/**************************************
* 名称: UART_Ini()
* 功能: UART初始化,波特率1200bps
**************************************/
void UART_Ini()
{
SCON=0x40; //串口模式1
SSTAT=0x00;
REN=1;
BRGCON=0;
BRGR1=BRGR1_DATA;
BRGR0=BRGR0_DATA;
BRGCON=3; //启动UART的波特率发生器
}
void INT_Ini() //端口初始化
{
P0M1=0x00;
P0M2=0x00;
P1M1=0x00;
P1M2=0x00;
// P0 = 0xfe;
// P1 = 0xfd;
}
void KEY_Ini()
{
KBPATN=0x00; //设置匹配条件
KBCON=0x00; //设置为相等中断
KBMASK=0x01;
EKBI=1; //使能键盘中断位
//相同电平产生中断
/*
KBPATN=0x01; //设置匹配条件
KBCON=0x02; //设置为相等中断
KBMASK=0x01;
EKBI=1;
*/
}
void BBFlash(uchar i)
{
uchar k;
for(k=0;k<i;k++)
{
BB=~BB; //蜂鸣器响一下
BB=~BB;
BB=~BB;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -