|
5鱼币
板子是51单片机学习板,,,下面代码中如果使用注释掉的第一种方法,,用串口助手以十六进制发送一个0xfe,数码管只能显示 e,但是用没有注释掉的那段代码数码管就能显示出 fe(求原因,,)
- #include <reg52.h>
- #define unchar unsigned char
- #define unint unsigned int
- sbit wei = P2^7; sbit duan = P2^6;
- unchar number = 0;
- unchar leddata[]={
-
- 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F, //"9"
- 0x77, //"A"
- 0x7C, //"B"
- 0x39, //"C"
- 0x5E, //"D"
- 0x79, //"E"
- 0x71, //"F"
- 0x76, //"H"
- 0x38, //"L"
- 0x37, //"n"
- 0x3E, //"u"
- 0x73, //"P"
- 0x5C, //"o"
- 0x40, //"-"
- 0x00, //熄灭
- 0x00 //自定义
-
- };
- void UART_init()
- {
- TMOD = 0x20;//定时器1 选择8位重装模式
- TH1 = 0xfa;
- TL1 = 0xfa; //比特率4800bps
- TR1 = 1;//开始计时
- SM0 = 0;
- SM1 = 1; //串口通讯模式1 10位异步通讯
- REN = 1; //接受指令开启
- }
- void delay(unchar n)
- {
- unchar x,y;
- for(x = 0; x < n; x++)
- for(y = 0; y < 115; y++);
- }
- void display()
- {
- unchar shi,ge;
- shi = number/16;
- ge = number%16;
- P0 = 0xff;
- wei = 1;
- P0 = 0xfe;
- wei = 0;
- duan = 1;
- P0 = leddata[shi];
- duan = 0;
- delay(1);
- P0 = 0xff;
- wei = 1;
- P0 = 0xfd;
- wei = 0;
- duan = 1;
- P0 = leddata[ge];
- duan = 0;
- delay(1);
- }
- void main ()
- {
- UART_init();
- while(1)
- {
- /* while(!RI);
- number = SBUF;
- RI = 0; */
- //这两种写法有什么样的区别,,为什么执行出来的效果不一样
- while(RI)
- {
- number = SBUF;
- RI = 0;
- }
-
- display();
- // delay(1000);
-
- }
- }
复制代码
本帖最后由 huyu 于 2017-8-10 09:46 编辑
这个程序是将 串口收到的数据传到P0 在向电脑发送一次收到的数据
你参考下 如有帮助请标记解决
#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int
void schul1(char sx);
void main()
{
PCON=0X00;
EA=1;/*****这俩开中断*****/
ES=1;
SCON=0X50;/*******这句是设置串口设置模式一****/
TMOD=0X20;/******这四个设置波特率******/
TL1=0XFD;
TH1=0XFD;
TR1=1;
while(1)
{
;/*****这里等着数据来****/
}
}
/********收到数据进入中断*******/
void schul0(void)interrupt 4
{
char sx;
ES=0;
sx=SBUF;
schul1(sx);
ES=1;
}
/*******把收到的数据再给发回去******/
void schul1(char sx)
{
SBUF=P0;
while(!TI);
TI=0;
RI=0;
}
|
最佳答案
查看完整内容
这个程序是将 串口收到的数据传到P0 在向电脑发送一次收到的数据
你参考下 如有帮助请标记解决
#include
#define uchar unsigned char
#define uint unsigned int
void schul1(char sx);
void main()
{
PCON=0X00;
EA=1;/*****这俩开中断*****/
ES=1;
SCON=0X50;/*******这句是设置串口设置模式一****/
TMOD=0X20;/******这四个设置波特率******/
TL1=0XFD;
TH1=0XFD;
TR1=1;
while(1)
{
;/*****这 ...
|