串口发送 SBUF=(TIME[2]>>4)+0x30;while(!TI);TI=0; SBUF=(TIME[2]& 0x0f)+0x30;while(!TI);TI=0; SBUF=':';while(!TI);TI=0; SBUF=(TIME[1]>>4)+0x30;while(!TI);TI=0; SBUF=(TIME[1]& 0x0f)+0x30;while(!TI);TI=0; SBUF=':';while(!TI);TI=0; SBUF=(TIME[0]>>4)+0x30;while(!TI);TI=0; SBUF=(TIME[0]& 0x0f)+0x30;while(!TI);TI=0; SBUF=' ';while(!TI);TI=0; SBUF='w';while(!TI);TI=0; SBUF='a';while(!TI);TI=0; SBUF='r';while(!TI);TI=0; SBUF='n';while(!TI);TI=0; SBUF='!';while(!TI);TI=0; SBUF=0x0d;while(!TI);TI=0; } } if(in1 && in2) { flag=0; } //查询显示 i=At24c02Read(num2*3+81); disp2[0]=(i>>4)+0x30; disp2[1]=(i& 0x0f)+0x30; j=At24c02Read(num2*3+82); disp2[3]=(j>>4)+0x30; disp2[4]=(j& 0x0f)+0x30; k=At24c02Read(num2*3+83); disp2[6]=(k>>4)+0x30; disp2[7]=(k& 0x0f)+0x30; write_string(2,0,disp2); if(i+j+k>0) write_string(2,9,"warn! "); else write_string(2,9,"safe "); //查看号码 for(i=0;i<16;i++) { disp1[i]=At24c02Read(i+phone*16); write_string(烧入板子LED不亮,有什么办法嘛
时间: 2023-10-30 17:07:16 浏览: 73
烧入板子 LED 不亮可能有以下几种原因:
1. 供电问题:检查电源是否正常,是否接触良好,电压是否符合要求。
2. 路由器设置问题:检查路由器的 SSID 和密码是否正确,以及是否开启了 DHCP 功能。
3. 程序问题:检查程序是否正确,是否存在语法错误或逻辑错误,是否正确配置了串口和 LED 端口。
针对这些问题,你可以逐一排查,进行调试和解决。
相关问题
#include <reg51.h>#define uchar unsigned char#define TR 0uchar buf[10]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a};uchar sum;void main(void){ init ( ); if(TR==0) {send( );} if(TR==1) {receive( );}}void delay(unsigned int i){ unsigned char j; for(;i>0;i--) for(j=0;j<125;j++) ;}void init(void){ TMOD=0x20; TH1=0xf4; TL1=0xf4; PCON=0x00; SCON=0x50; TR1=1;}void send(void){ uchar i do{ delay(1000); SBUF=0xaa; while(TI==0); TI=0; while(RI==0); RI=0; }while(SBUF!=0xbb); do { sum=0; for(i=0;i<10;i++) { delay(1000); SBUF =buf[i]; sum+=buf[i]; while(TI==0); TI=0; } delay(1000); SBUF=sum; while(TI==0); TI=0; while(RI==0); RI=0; }while(SBUF!=0x00); while(1);}void receive(void){ uchar i; RI=0; while(RI==0);RI=0; while(SBUF!=0xaa); SBUF=0xBB; while (TI==0); TI=0; sum=0; for(i=0;i<10;i++) { while(RI==0);RI=0; buf[i]=SBUF; sum+=buf[i]; } while(RI==0); RI=0; if(SBUF==sum) { SBUF=0x00; } else { SBUF=0xFF; while(TI==0);TI=0; }}
这段代码是基于单片机的串口通信代码,使用的是8051系列的单片机。其中定义了一些常量和变量,包括数据传输方向(TR)、发送或接收数据的缓存数组(buf)、校验和(sum)等。在 main 函数中,根据 TR 的值判断是发送还是接收数据,并调用相应的函数。send 函数用于发送数据,receive 函数用于接收数据。这里使用了循环来发送和接收数据,并且在发送时还进行了校验和的计算和检查。在单片机中,串口通信是非常常见的操作,常用于与外部设备进行数据交互。
#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar i=0; uchar Dat[] = {Ox00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; void delay(){ uint j; for(j = 0;j<31000;j++); } void main(){ TMOD = 0x20; TH1 = TL1 = 0xf3;PCON=0x80; TR1 = 1; SCON=0xd0; ES = 1;EA = 1; ACC = Dat[i]; CY = P; TB8 = CY; P1 = ACC; SBUF = ACC; delay(); while(1); } void trs() interrupt 4 using 1 { uchar Dat1; if(TI == 0){ RI = 0;Dat1 = SBUF; if(Dat1 == 0){ i++; ACC = Dat[i]; CY = P; TB8 = CY; P1 = ACC; SBUF = ACC; delay(); if(i == 0x0f) ES = 0; } else{ ACC = Dat[i]; CY = P; TBB = CY; P1 = ACC; SBUF = ACC; delay(); } } else TI = 0; }解释每行代码
这是一段单片机(MCU)的程序,使用的是8051系列的MCU,下面是每行代码的解释:
```c
#include<reg52.h> // 导入头文件,包含了8052的寄存器定义
#define uchar unsigned char // 定义uchar为无符号char类型
#define uint unsigned int // 定义uint为无符号int类型
uchar i=0; // 定义变量i,并初始化为0
uchar Dat[] = {Ox00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; // 定义一个长度为16的数组Dat,存储16进制数
void delay(){ // 定义延时函数
uint j;
for(j = 0;j<31000;j++); // 循环延时31000次
}
void main(){ // 主函数
TMOD = 0x20; // 定时器模式设为“8位自动重载”
TH1 = TL1 = 0xf3; // 定时器初值设为0xf3
PCON=0x80; // 波特率发生器设为SMOD=1,即波特率加倍
TR1 = 1; // 启动定时器
SCON=0xd0; // 串口模式设为“8位数据,可变波特率,启用接收”
ES = 1; // 开启串口中断
EA = 1; // 开启总中断
ACC = Dat[i]; // 将数组Dat中第i个元素赋值给累加器ACC
CY = P; // 将累加器ACC的最高位(即符号位)赋值给进位标志位CY
TB8 = CY; // 将进位标志位CY赋值给第9位发送位TB8
P1 = ACC; // 将累加器ACC的值输出到P1口
SBUF = ACC; // 将累加器ACC的值发送到串口缓冲区
delay(); // 延时
while(1); // 循环
}
void trs() interrupt 4 using 1 { // 定义串口中断函数
uchar Dat1; // 定义变量Dat1
if(TI == 0){ // 如果发送中断标志位TI为0,表示可以发送
RI = 0; // 接收中断标志位RI清零
Dat1 = SBUF; // 从串口缓冲区读取数据,存储到变量Dat1中
if(Dat1 == 0){ // 如果读取到的数据为0
i++; // 变量i自增1
ACC = Dat[i]; // 将数组Dat中第i个元素的值赋值给累加器ACC
CY = P; // 将累加器ACC的最高位(即符号位)赋值给进位标志位CY
TB8 = CY; // 将进位标志位CY赋值给第9位发送位TB8
P1 = ACC; // 将累加器ACC的值输出到P1口
SBUF = ACC; // 将累加器ACC的值发送到串口缓冲区
delay(); // 延时
if(i == 0x0f) ES = 0; // 如果i等于0x0f(即15),则关闭串口中断
}
else{ // 如果读取到的数据不为0
ACC = Dat[i]; // 将数组Dat中第i个元素的值赋值给累加器ACC
CY = P; // 将累加器ACC的最高位(即符号位)赋值给进位标志位CY
TBB = CY; // 将进位标志位CY赋值给第9位发送位TB8
P1 = ACC; // 将累加器ACC的值输出到P1口
SBUF = ACC; // 将累加器ACC的值发送到串口缓冲区
delay(); // 延时
}
}
else TI = 0; // 如果发送中断标志位TI不为0,表示正在发送,将TI清零
}
```
阅读全文