微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口中断

串口中断

时间:10-02 整理:3721RD 点击:

#include <reg52.h>


#define uchar unsigned char

#define uint  unsigned int


uchar num;


/*void delay(uint z)

{

        uint x,y;

        for(x = z; x > 0; x--)

                for(y = 114; y > 0 ; y--);

}        */

void UART_init()

{

        TMOD = 0x20;          //T1工作模式2  8位自动重装

        TH1 = 0xfd;

        TL1 = 0xfd;         //比特率9600

        TR1 = 1;                //启动T1定时器

        SM0 = 0;

        SM1 = 1;                 //串口工作方式1 10位异步

        REN = 1;                //串口允许接收

        EA  = 1;                //开总中断

        ES  = 1;                //串口中断打开

}

void main()

{

        UART_init(); //串口初始化

        while(1);       

}


void UART() interrupt 4

{

        if(RI)        //检测是否接收完成

        {

                num = SBUF;          //num 取出接收缓存器的值

                P1 = SBUF;

                num++;

                RI = 0;//因为接受了以后RI就变为了1

                SBUF = num;       

                while(!TI);

                TI = 0;

        }

}



我买的是清翔电子的开发板,这程序也是它原本配套的

现在的问题是:我输入了一个2,但亮的灯却是2,3,6,7,

还有就是我输入一个02,它返回一个13,但视屏教程上它返回的又是03,这是怎么回事啊


中断程序是错的啊

错在哪里呢,这是开发板自身配套的程序

程序我没看,你看下串口助手设置的是多少进制显示或者多少进制接收,还有多少进制发送。亮灯你就不用管他了,那个没关系

那你就找做开发板的问问

led亮应该和程序上的一致吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top