0x00翻转字符串

下面是一个基于51单片机的计算机向单片机发送字符串的完整代码,供您参考: ```c #include <reg52.h> #define FOSC 11059200L // MCU主频 #define BAUD 9600 // 串口波特率 #define TIMER_1MS (65536-FOSC/12/1000) // 定时器初值 sbit LED = P1^0; // 控制LED sbit P_SW = P3^0; // 控制串口工作模式 void InitUart(); // 串口初始化函数 void SendData(char dat); // 串口发送数据函数 void SendString(char *s); // 串口发送字符串函数 void main() { InitUart(); // 初始化串口 TMOD = 0x10; // 设置定时器1为模式1 TH1 = TL1 = TIMER_1MS; // 设置定时器初值 TR1 = 1; // 启动定时器1 while(1) { LED = ~LED; // 翻转LED状态 SendString("Hello, MCU!"); // 发送字符串 delay(1000); // 延时1s } } void InitUart() { SCON = 0x50; // 设置串口为模式1 TMOD &= 0x0F; // 清除定时器1的高4位 TMOD |= 0x20; // 设置定时器1为模式2 TH1 = TL1 = -(FOSC/12/32/BAUD); // 设置波特率 ES = 1; // 允许串口中断 PS = 1; // 设置串口中断为高优先级 EA = 1; // 允许总中断 P_SW = 0; // 将串口工作模式设置为1 } void SendData(char dat) { SBUF = dat; // 将要发送的数据存入SBUF while(!TI); // 等待发送完成 TI = 0; // 清除发送完成标志 } void SendString(char *s) { while(*s) // 逐个发送字符串中的字符直到遇到结束符'\0' { SendData(*s++); } } void InterruptUart() interrupt 4 using 1 { if(RI) // 如果收到数据 { RI = 0; // 清除接收中断标志 } if(TI) // 如果发送完成 { TI = 0; // 清除发送中断标志 } } ``` 以上代码通过串口向单片机发送字符串,并在单片机上控制LED翻转,以便观察串口通信是否正常。需要注意的是,代码中使用了定时器来控制串口波特率,同时也使用了中断来处理串口的收发,这样可以在单片机忙于其他任务时也能完成串口收发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值