完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小弟想做一个上位机程序,上位机发送数字,单片机接收该数据并比较该数字是否等于50,如果等于就点亮led灯。然后单片机给上位机回应“I get XX”(XX是上位机发送的数字)。现在的问题是我发送50,led灯也不亮。查找了好多帖子,感觉应该是数字的进制转换问题。什么十六进制,十进制,ASCII码,搞得头大。。。请大神指导应该怎么改程序,谢谢。labview程序和单片机程序如下,单片机我是用proteus仿真的。
#include #define uchar unsigned char #define uint unsigned int uint flag,a,i; uchar code table[]="I get "; //字符串数组,如果单片机收到数据就把这个字符串数组发到上位机 ***it led=P0^0; void init()// STC89C52单片机的串口初始化(程序没问题,按书上写的) { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init(); while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; //把字符串数组发送到上位机 while(!ti); TI=0; } SBUF=a; //把收到的数字也发送到上位机,这样做的目的是我想在上位机上显示“I get 50” while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 { RI=0; a=SBUF;//接收上位机发送来的数字,并把值赋给变量a flag=1; if(a==50) //如果接收到的数字为50就点亮led灯 led=1; } 本帖被以下淘专辑推荐:
|
|
相关推荐
7个回答
|
|
怎么没人来,如果能解决要多少积分都行呀!
|
|
|
|
四大四大四大四大四大四大是
|
|
|
|
点赞。 。
|
|
|
|
正在找这方面的程序~感谢楼主
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
743 浏览 1 评论
1510 浏览 4 评论
labview如何实现电机位置与图像清晰度计算值相对应,或者说如何实现电机每步距计算一次清晰度值?
1808 浏览 2 评论
2360 浏览 1 评论
2746 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-9 06:16 , Processed in 0.521533 second(s), Total 55, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191