标题: 想通过单片机中断的方式触发发送程序,但是就是一直没有数据发出来 [打印本页]

作者: 不吐泡的鱼    时间: 2018-5-24 22:02
标题: 想通过单片机中断的方式触发发送程序,但是就是一直没有数据发出来
程序主要是想通过在低电平中断时,将引脚口的状态发送出来,但是这个一直没有数据发出来,麻烦各位看一下。谢谢了!!
#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;//低电平触发中断
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;//波特率9600
   while(1)
   ;
}
void int0(void) interrupt 0
{
SendOneByte((unsigned char)c);
}


作者: devcang    时间: 2018-5-24 23:11


试试这样的写法————即是不要在中断中写长时间的代码,除非中断暂停了。




作者: 15942379927    时间: 2018-5-24 23:25
试试楼上说的,换一种思路去写程序
作者: 不吐泡的鱼    时间: 2018-5-25 08:48
devcang 发表于 2018-5-24 23:11
试试这样的写法————即是不要在中断中写长时间的代码,除非中断暂停了。

你好,我试了一下你的这个写法,可是还是没有数据发送出来,还有你的while循环里面的语句不是很明白
作者: wulin    时间: 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;//低电平触发中断
/*        TMOD = 0x20;
        SCON = 0x50;
        TH1 = 0xFD;
        TL1 = 0xFD;
        PCON = 0x00;*/  //波特率9600
        a=0;
        while(1);
   
}
void int0(void) interrupt 0
{
        d=c;
        SendOneByte(d);
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1