51单片机。为什么我的程序加入中断后。主程序不进入死循环里

2019-07-15 11:05发布

void UART_init(void)
{
TMOD=0x21;//定时器1设置与工作方式2.将定时器0设置成工作方式1.
TL1=0xFD;
TH1=0xFD;//置初值,波特率9600,晶振
IE=0x97;
IP=0x15;
TCON=0x00;
TR1=1;//启动定时器
SCON=0xF0;//串行口方式3
PCON=0x00;//倍频为0
P0=0x00;
P2=0x00;
rd=0;}



//*************************************//
void main(viod)//主函数
{
UART_init();
while(1)
{tready=1;
rready=1;//假定准备好发送和接收
key=kbscan();
delay(10);
if(key!=0)
{
keyvalue();};
if(lamp!=0) judge();
if(board!=0) room();
if(get_data==1)str_sre();
} }
void serial_int(void)  interrupt 4 using 1
{
RI=0;
ES=0;
if(SBUF==benji)
{get_data=1;}
ES=1;}
我P1口接的是矩阵键盘。矩阵键盘扫描程序设置P1初值为0XF0。可是现在P1口置1了。只是为什么呢

QQ图片20170428195534.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
你好么199561
2019-07-16 10:00
人中狼 发表于 2017-4-30 10:43
不太明白你的问题,如何是不进死循环,死循环是指while(1)吗,但是在while(1)里所有的能被看到的操作都在if(key!=0)里,如果这个不成立,下面的都不执行,kbscan();没看,不知道有没有问题,至于P1口置1,不清楚是不是有什么地方把P1口置1了,或者P1口在什么情况下由0xf0变成了0xff,信息不全 ...

很抱歉。。网站一直在审核我发的程序。我发不出来。具体程序在这里http://bbs.elecfans.com/forum.ph ... =1126107&extra=

一周热门 更多>