[求助] 如何通过串口通信来改变数码管的所显示的东西

胡豆豆的春天   2017-4-1 17:54 楼主
在这个代码中,我想用串口助手来控制数码管的显示,但是我并不想让显示的程序放在   interrupt   4   中(也就是说想在主函数中来控制数码管的该变)


#include
#define uchar unsigned char
#define uint  unsigned int
sbit du=P2^6;
sbit we=P2^7;
uchar a;
char code table []={0x3f,0x06,0x5b,0x4f,0x66,0x6d,     0x7d,0x07,0x7f,0x6f,0x77,0x7c,     0x39,0x5e,0x79,0x71};

void main()
{
        SCON=0X50;
        PCON=0x00;
        TMOD=0X20;
        EA=1;
        ES=1;
        TL1=0Xfd;
        TH1=0Xfd;
        TR1=1;
        du=0;
        we=0;       

        while(1) ;
/*        {
                we=1;
                P0=0x00;
                we=0;       
                P0=0x00;
                du=1;
                P0=table[a];
                du=0;
        }           */
}

void zhongduan() interrupt 4
{
                ES=0;
                RI=0;
                a=SBUF;
                we=1;
                P0=0x00;
                we=0;
                P0=0xff;
                du=1;
                P0=table[a];
                du=0;
                EA=1;
}



  • 这是原理图

回复评论 (6)

想在主函数中改变显示,中断必须通知主函数改变显示内容。为此中断必须建一个标志,主函数必须检测这个标志,没有标志则跳过改变显示内容这一段,检测到标志则修改显示内容,然后清标志。
点赞  2017-4-1 19:13
其实,如果需要显示的是串口送来的内容,显示程序放在串口中断里面是正常的作法。
点赞  2017-4-1 19:24
             我做过
点赞  2017-4-1 19:38
建个数组,主程序里显示数组里的数,中断里修改数组
点赞  2017-4-1 19:44
引用: maychang 发表于 2017-4-1 19:13
想在主函数中改变显示,中断必须通知主函数改变显示内容。为此中断必须建一个标志,主函数必须检测这个标志 ...

那么那个标志应该如何建立呢?而主函数有应该如何检测到那个标志呢?
点赞  2017-4-1 20:01
引用: shihuntaotie 发表于 2017-4-1 19:44
建个数组,主程序里显示数组里的数,中断里修改数组

我这个程序就是用的数组,但是用数组的话也应该从       interrupt  4   中向主函数中传输数组的下标呀,应该如何传输那个下标呢?
点赞  2017-4-1 20:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复