我设计了一块板子,有8只LED,三个按钮,一个串口,目的是按钮和串口结合,使LED亮,
LED1=P0^0,
LED2=P0^1,
LED3=P0^2,
LED4=P0^3,
LED5=P0^4,
LED6=P0^5,
LED7=P0^6,
LED8=P0^8,
K4=P1^4,
K5=P1^5,
K6=P1^6,
主程序如下:
main()
{
uart(); //串口初始化
LED1=LED2=LED3=LED4=K5;
LED5=K6;
if(uartacept()==0x22) //串口接收0x22
{
if(K4==0)
{
delay1ms(15); //延时15ms
if(K4==0)
{
LED6=LED7=LED8=0;
}while(!K4);
}
else
{
LED1=0;
delay1ms(500);
LED1=1;
LED2=0;
delay1ms(500);
LED2=1;
LED3=0;
delay1ms(500);
LED3=1;
}
}
}
程序运行无误,但是按按钮没有现象。只有串口收到0x22才会使LED1,LED2,LED3闪亮。按钮无反应。
如果不运行串口部分,则按K5,LED1,LED2,LED3,LED4亮。按K6,LED5亮。如果只运行部分,则也是只有串口收到0x22才会使LED1,LED2,LED3闪亮。按钮无反应。
为什么?用的是AT89S52.
串口用中断接收啊
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
没反应是没检测到,因为程序在运行其他的,没运行到检测的那段程序,如果用IO中断检测的话你就知道游泳了