標(biāo)題: PC沒(méi)有向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)為什么會(huì)產(chǎn)生接收中斷 [打印本頁(yè)]

作者: 單片機(jī)小小白白    時(shí)間: 2018-2-11 19:59
標(biāo)題: PC沒(méi)有向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)為什么會(huì)產(chǎn)生接收中斷
硬件用的是天祥的實(shí)驗(yàn)板。
以下是在原程序的基礎(chǔ)上加了數(shù)碼管顯示。
復(fù)位后,單片機(jī)還是顯示 000001.說(shuō)是有一次接收中斷。
求大神指點(diǎn)

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char flag,a;
unsigned int num=0;
sbit dula=P2^6;
sbit wela=P2^7;
void smg_num(long);
void main()
{

    TMOD=0x20;//設(shè)置定時(shí)器1為工作方式2
    TH1=0xfd;
    TL1=0xfd;
    TR1=1;
    REN=1;
    SM0=0;
    SM1=1;
    EA=1;
    ES=1;
    while(1)
        {
        /*    if(RI==1)
            {
            RI=0;
            P1=SBUF;
            }*/
            smg_num(num);
            if(flag==1)
                {
                    ES=0;
                    flag=0;
                    SBUF='1';//28;   
                    while(!TI);   
                    TI=0;
                    SBUF='2';//28;   
                    while(!TI);   
                    TI=0;
                    SBUF='3';//28;   
                    while(!TI);   
                    TI=0;
                    ES=1;
                }
        }
}

void ser() interrupt 4
{
    RI=0;
//    P1=SBUF;
    a=SBUF;
    flag=1;
    num=num+1;
}
void smg_num (long num)
{
    uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    long num_xianshi;
    uint weixuan,weixuan_temp=0xdf;
//    num=6523455;//int整型最大到32767,只能用長(zhǎng)整型long
    for(weixuan=0;weixuan<6;weixuan++)
    {
        wela=1;
        P0=weixuan_temp;
        wela=0;
        P0=0;
        dula=1;
        num_xianshi=num%10;
        P0=table[num_xianshi];
        dula=0;   
        P0=0;
        weixuan_temp=weixuan_temp>>1;
        weixuan_temp=weixuan_temp|0xc0;//按位或運(yùn)算
        num=num/10;
    }
}


作者: 單片機(jī)小小白白    時(shí)間: 2018-2-12 08:57
已經(jīng)查出原因,REN=1寫(xiě)早了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1