找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2508|回復: 4
收起左側(cè)

想通過單片機中斷的方式觸發(fā)發(fā)送程序,但是就是一直沒有數(shù)據(jù)發(fā)出來

[復制鏈接]
ID:337659 發(fā)表于 2018-5-24 22:02 | 顯示全部樓層 |閱讀模式
程序主要是想通過在低電平中斷時,將引腳口的狀態(tài)發(fā)送出來,但是這個一直沒有數(shù)據(jù)發(fā)出來,麻煩各位看一下。謝謝了!
#include <reg51.h>
sbit S=P3^2;
sbit c=P2^1;
void SendOneByte(unsigned char c)
{
    SBUF =0x30+c;
    while(!TI);
    TI = 0;
}
void main(void)
{
    EA=1;//開放總中斷
    EX0=1;//允許使用外中斷
    IT0=0;//低電平觸發(fā)中斷
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;//波特率9600
   while(1)
   ;
}
void int0(void) interrupt 0
{
SendOneByte((unsigned char)c);
}

回復

使用道具 舉報

ID:277550 發(fā)表于 2018-5-24 23:11 | 顯示全部樓層
snap000520.png

試試這樣的寫法————即是不要在中斷中寫長時間的代碼,除非中斷暫停了。



回復

使用道具 舉報

ID:331575 發(fā)表于 2018-5-24 23:25 | 顯示全部樓層
試試樓上說的,換一種思路去寫程序
回復

使用道具 舉報

ID:337659 發(fā)表于 2018-5-25 08:48 | 顯示全部樓層
devcang 發(fā)表于 2018-5-24 23:11
試試這樣的寫法————即是不要在中斷中寫長時間的代碼,除非中斷暫停了。

你好,我試了一下你的這個寫法,可是還是沒有數(shù)據(jù)發(fā)送出來,還有你的while循環(huán)里面的語句不是很明白
回復

使用道具 舉報

ID:213173 發(fā)表于 2018-5-25 10:24 | 顯示全部樓層
#include <reg51.h>
sbit S=P3^2;
sbit c=P2^1;
unsigned char d;
void SendOneByte(unsigned char c)
{
    SBUF =0x30+c;
    while(!TI);
    TI = 0;
}
void main(void)
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;

        EA=1;//開放總中斷
        EX0=1;//允許使用外中斷
        IT0=0;//低電平觸發(fā)中斷
/*        TMOD = 0x20;
        SCON = 0x50;
        TH1 = 0xFD;
        TL1 = 0xFD;
        PCON = 0x00;*/  //波特率9600
        a=0;
        while(1);
   
}
void int0(void) interrupt 0
{
        d=c;
        SendOneByte(d);
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表