找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1980|回复: 4
收起左侧

想通过单片机中断的方式触发发送程序,但是就是一直没有数据发出来

[复制链接]
ID:337659 发表于 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);
}

回复

使用道具 举报

ID:277550 发表于 2018-5-24 23:11 | 显示全部楼层
snap000520.png

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



回复

使用道具 举报

ID:331575 发表于 2018-5-24 23:25 | 显示全部楼层
试试楼上说的,换一种思路去写程序
回复

使用道具 举报

ID:337659 发表于 2018-5-25 08:48 | 显示全部楼层
devcang 发表于 2018-5-24 23:11
试试这样的写法————即是不要在中断中写长时间的代码,除非中断暂停了。

你好,我试了一下你的这个写法,可是还是没有数据发送出来,还有你的while循环里面的语句不是很明白
回复

使用道具 举报

ID:213173 发表于 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);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表