找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2457|回复: 4
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
程序主要是想通过在低电平中断时,将引脚口的状态发送出来,但是这个一直没有数据发出来,麻烦各位看一下。谢谢了!!
#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);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2018-5-24 23:11 | 只看该作者


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



回复

使用道具 举报

板凳
ID:331575 发表于 2018-5-24 23:25 | 只看该作者
试试楼上说的,换一种思路去写程序
回复

使用道具 举报

地板
ID:337659 发表于 2018-5-25 08:48 | 只看该作者
devcang 发表于 2018-5-24 23:11
试试这样的写法————即是不要在中断中写长时间的代码,除非中断暂停了。

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

使用道具 举报

5#
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 单片机教程网

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