单片机入门教程之六
  

串行通讯程序设计

单片机的强大功能不光表现在本机进行自动化控制上,还可以通过与其他计算机的通讯进行数据传输,实现远程控制。要实现计算机与计算机之间的通讯,目前应用最广的便是用RS232通讯协议。在这一节中,我们要介绍一个上位计算机与单片机的数据通讯的实验。对于计算机上的软件,可以选用串口调试工具来完成,若没有的网友,可以在我们这里下载

单片机通讯程序,所要完成的功能为:当接收到16进制数:88后,改变6只发光二极管的状态,同时蜂鸣器响二声,若接收到的数据不为88H,则蜂鸣器叫二声表示接收到的数据,P1口的输出状态不变。具体汇编程序如下:

LED1 EQU P1.7 ;引脚定义
LED2 EQU P1.6 ;
LED3 EQU P1.5 ;
LED4 EQU P1.4 ;
LED5 EQU P1.3 ;
LED6 EQU P1.2 ;
BL EQU P3.7 ;定义蜂鸣器引脚
K1 EQU P3.5 ;定义按键引脚
K2 EQU P3.4 ;
K3 EQU P3.3 ;
K4 EQU P3.2 ;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ORG 0000H ;程序定位于0000开始执行
AJMP START ;跳转至START
ORG 0023H ;定位于串行中断入口地址
AJMP RECIVE ;执行串行中断程序
START:
MOV SCON,#50H ;设置成串口1方式0101,0000
MOV TMOD,#20H ;波特率发生器T1工作在模式2上
MOV PCON,#80H ;波特率翻倍为2400x2=4800BPS
MOV TH1,#0F3H ;预置初值(按照波特率2400BPS预置初值)
MOV TL1,#0F3H ;预置初值(按照波特率2400BPS预置初值)
SETB TR1 ;启动定时器T1
SETB ES ;开串口中断
SETB EA ;开总中断
;以上完成通讯初始化设置
MOV P1, #0FFH ;
MOV P3, #0FFH ;
MAIN:
AJMP MAIN ;程序原地等待
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;串行中断子程序
RECIVE:
CLR EA ;关总中断
MOV A, SBUF ;读取串口接收到的数据
CJNE A, #88H, RE1 ;不等于88H,则跳转RE1
MOV A, P1 ;读取P1口数据
CPL A ;取反
MOV P1, A ;送回P1口,显示与原来相反
RE1:
CLR BL ;蜂鸣器响二声
ACALL DEL250MS ;
SETB BL ;
ACALL DEL250MS ;
CLR BL ;
ACALL DEL250MS ;
SETB BL ;
CLR RI ;清串口中断标志
SETB EA ;开总中断,继续接收数据
RETI ;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;12M晶振,每个机器周期所用时间为1uS
DEL5MS:
MOV R7, #94 ;占用一个机器周期
DEL5MS1:
MOV R6, #25 ;占用一个机器周期
DJNZ R6, $ ;占用二个机器周期
DJNZ R7, DEL5MS1 ;占用二个机器周期
RET ;总占用机器周期为:4983个,即4.98MS

DEL250MS:
MOV R5, #50 ;
DEL250MS1:
ACALL DEL5MS ;
DJNZ R5, DEL250MS1;
RET ;子程序返回
END ;结束程序

程序演示说明:

将串口线插在计算机的串行通讯口上,另一端与实验板上的串口插座相连,接通实验板电源,打开串口调试助手软件,其界面如下:

设定相应的参数,串口选实际计算机上的串口号,在我们操作的计算机上选用的COM4,因此所选项也为:COM4;

波特率选4800,因为单片机的程序我们设为4800,两者要一致,否则无法通讯;

其他各项参数设成和我们给出的图上一致就可以了。

全部设好后,用鼠标点“手动发送”键,88H这个数据就发送到单片机上了,这时你可以看到输出的发光管的状态改变了,同时蜂鸣器叫二声,若发送的是另外的数据,则蜂鸣器叫二声,但发光管的状态不会改变。

通过以上程序练习,学习者可以掌握如何用计算机向单片机发出控制指令,单片机在接收到上位机传来的控制指令后,执行相应的动作。在本程序中,只传输了一个控制字,传输多个字节的内容,原来也基本相同,学习者可以根据自己的理解,通过对接收到的不同字节信息,控制单片机的相关设备执行不同的动作,从而实现点动鼠标便可以控制各种电子硬件设备的目的。

初学者如在这个实验中遇到问题的,可以通过在线技术支持进行咨询:QQ:153286663 张工


如何购买?            我要订货!

说明:为了满足部分网友的要求:希望我们帮他把套件做成调试好的成品,我们提供套件的制作业务,统一收取的费用为:一个人工工资或半个人工工资,即80元/人工,若简单的则为半个人工工资,40元!

联系地址:

生产与研发:浙江省杭州市西湖区转塘科技工业园区回龙路张家堡30号

市场直销:杭州市登云路639号杭州电子市场1楼CK003号(南大门进入后中间第2间)

联系人:张建平 先生

电话/传真:

0571-87649051(研发)

0571-89908336(市场)

0571-87649051(传真)

手机:13758273237  

QQ:153286663(技术研发) 33586393(技术支持) 83655724(市场)

EMAIL:zjp@oldzhang.com

zjpsh001@163.com