【提问】求助帖
各位大神,我用迪文触摸屏做上位机,发送指令控制单片机继电器开合始终无法成功,请大神们帮我看看程序哪里出错了,非常感谢。#include<reg52.h>
typedef unsigned char u8;
#define RX_Length 64
u8 xdata RX1_Buffer; //接收缓冲
sbit Y0 = P2^0;
sbit Y1 = P2^1;
sbit Y2 = P2^2;
sbit Y3 = P2^3;
void init()
{
PCON=PCON|0x80; //波特率倍增。配置串口波特率115200 11.52M晶振
SCON=0x50; //十位异步收发器,波特率可变,REN位为1,允许串口接收
TMOD=0x21; //定时器0为8位自动重装定时器,定时器1为16位定时器
TH1=0xff;
TL1=0xe8;
TR1=1; //开定时器1.
TH0=0xb8; //10MS定时器中断
TL0=0x00;
TR0=1; //开定时器0
ES=1; //开串口中断
ET0=1; //定时器0中断允许位
EA=1;
}
void main(void)
{
init();
while(1)
{
}
}
void Uart_interrupt(void) interrupt 4 //串口中断方式处理和触摸屏的数据交换
{
RX1_Buffer=SBUF;
while(!RI) //接收中断
{
RI=0;
}
if((RX1_Buffer==0x5A)&&(RX1_Buffer==0xA5)&&(RX1_Buffer==0x06)&&(RX1_Buffer==0X83)&&
(RX1_Buffer==0x00)&&(RX1_Buffer==0x20)&&(RX1_Buffer==0x01)&&(RX1_Buffer==0x00)) //按键返回
{
if(RX1_Buffer==0x01)//Y0
{
Y0 = 1;
}
if(RX1_Buffer==0x02)//Y1
{
Y0 = 0;
}
if(RX1_Buffer==0x03)//Y2
{
Y1= 1;
}
if(RX1_Buffer==0x04)//Y3
{
Y1= 0;
}
if(RX1_Buffer==0x05)//Y4
{
Y2 = ~Y2;
}
if(RX1_Buffer==0x06)//Y5
{
Y3 = ~Y3;
}
}
}
楼主的代码看起来 数据写不进这个数组, 越界了。 另外单片机的问题最好咨询专业的单片机卖家。 本帖最后由 luoyangdwin1 于 2022-3-16 17:59 编辑
http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=300&extra=page%3D1
参考链接中的资料。
头文件要用官方的t5los8051.h。
http://inforum.dwin.com.cn:20080/forum.php?mod=forumdisplay&fid=143视频教学
前提是上面的代码是迪文屏的。
奥!谢谢大神回复:handshake 去看看熊家鱼老师的视频教学,里面的IO控制比较好用(我是拿来调试步进电机了~) 好的,谢谢楼主提醒。
页:
[1]