且听风吟1314 发表于 2017-11-7 10:05 只要把串口接收到的数据用一个函数加以解析就可以按需要控制任意端口,用这个函数替换P2=~ch; void service() { switch(ch) { case 0x01: P0=0X0F; break; case 0x02: P1=0Xf0; break; case 0x03: P2=0X55; break; ...... ...... case 0xff: P1=0Xaa; break; default: break; } } |
且听风吟1314 发表于 2017-11-7 10:05 你先将这个程序好好看看吧。 看这么几个方面? 第一:串口通讯都要设置些什么寄存器? 第二:每个寄存器的值是怎么来的?可不可以改变? 第三:控制部分在哪里?为什么可以控制?(这个看懂了,你自然会控制其它I/O口了) 我这个程序,只能是个示范程序,其实真的要完成有意义的控制,还有很多内容,努力学吧,祝成功! |
wulin 发表于 2017-11-6 13:22 非常感谢,我现在通过以上程序能用串口控制这几个LED了,但是如果要把其它P口加入到里面一起控制的话,如把p00-p07 p10-p17 一起加入用串口控制,程序要怎么改呢,麻烦了 |
|
我的板子和你完全一样,我这个程序,就是串口控制LED灯的。程序功能是:用字符方式发送1,LED灯最右边的一个亮,以字符方式发送2,灯灭。 #include<reg52.h> typedef unsigned char u8; typedef unsigned int u16; sbit LED1=P2^0; u8 receiveData; u8 n[]="12"; void UsartInit()//串口初始化函数 { SCON=0X50;//设置为工作方式1 TMOD=0X20;//设置计数器工作方式2 PCON=0X80;//波特率加倍 TH1=0XF3;//计数器初始值设置,注意波特率是4800的 TL1=0XF3; ES=1;//打开接收中断 EA=1;//打开总中断 TR1=1;//打开计数器 } void main() { UsartInit();//串口初始化 while(1); } void Usart() interrupt 4//中断函数 { unsigned char m; m=SBUF; if(m==n[0]) { LED1=0; } if (m==n[1]) { LED1=1; } receiveData=SBUF;//出去接收到的数据 RI = 0;//清除接收中断标志位 SBUF=receiveData;//将接收到的数据放入到发送寄存器 while(!TI);//等待发送数据完成 TI=0;//清除发送完成标志位 } 串口调试软件用的STC-ISP的串口调试功能。如图所示设置就可以了。
注意:串口号是你的号,这里的COM3是我的。 |
且听风吟1314 发表于 2017-11-6 10:47 还是看不明白你的意思。 |
|
#include <reg51.h> #define uchar unsigned char uchar ch; bit flag=0; //接收完成标志, void init_uart() { TMOD=0X20; //定时器/计算器工作模式寄存器 TH1=0XFD; //波特率9600 TL1=0XFD; //波特率9600 SCON=0X50; //串行控制寄存器 TR1=1; //开定时器T1 EA=1; //开总中断 ES=1; //开串行口中断 } void main() { init_uart(); while(1) { if(flag==1) //接收完成标志为1 { ES=0; //关串口中断 flag=0; //接收完成标志清0 SBUF=ch; //发送数据 while(!TI); //等待发送中断请求标志位为1 TI=0; //发送中断请求标志位清0 ES=1; //开串口中断 } P2=~ch; //LED低电平显示收到的数据 } } void UART_interrupt() interrupt 4 { RI=0; //接收中断请求标志位 ch=SBUF; //获取SBUF接收到的数据 flag=1; //接收完成标志置1 }
|
本帖最后由 wulin 于 2017-11-6 13:26 编辑 ahshmj 发表于 2017-11-6 10:38 |
无标题.jpg (116.01 KB, 下载次数: 38)
|
你去找一下单片机串口例程的源码 然后在源码的基础上修改一下就可以实现了 自己多看看书 多敲敲代码 你这个其实不难的 自己动手才有意思 |
ahshmj 发表于 2017-11-6 10:38 不好意思我小白一枚,表达不准确,我要就是烧到单片机上的那个代码,还有 怎么设置这个穿孔助手软件 ![]() |
单片机的接收程序?单片机设置波特率,串口中断接收,将接收到的数据送P2口。电脑上的可以用“串口助手”。
|