首页 采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能

采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能

举报
开通vip

采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能 ;------------------------------------------------- ;------------------------------------------------- ORG 0000H LJMP CSH ;转初始化程序 ORG 0023H LJMP INTS ;转串行口中断程序 ORG 0050H ;-----------------------------...

采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能
采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能 ;------------------------------------------------- ;------------------------------------------------- ORG 0000H LJMP CSH ;转初始化程序 ORG 0023H LJMP INTS ;转串行口中断程序 ORG 0050H ;-------------------------------------------------- ;---------------初始化程序------------------------- CSH: MOV TMOD,#20H ;设置定时器1工作方式2:自动再装入8位计数器 MOV TL1,#0F3H ;设置波特率4800:初值为243 MOV TH1,#0F3H SETB TR1 ; MOV SCON,#50H ;设置串行寄存器工作方式1:10位UART MOV PCON,#80H ;设置波特率倍增位 SETB EA SETB ES ;允许串行口中断 MOV P2,#0FFH ;按键初始化:低电平检测 MOV R0,#36H ;动态扫描初始位 MOV DPTR ,#TAB ;查表首地址 MOV 3EH,#0FEH ;数码管位控制寄存器赋初值:P1.7控制36H LJMP MAIN ;-------------------------------------------------- ;-------------串行口中断程序----------------------- INTS: CLR EA ;关总中断:保证正常执行中断申请 CLR RI PUSH DPL ;保护栈值 PUSH DPH MOV 70H,A ;保护累加器A的内容 MOV A,SBUF MOV 30H,A ;接收PC机发送过来的数据:用30H寄存 POP DPH POP DPL ;出栈 ;------- MOV A,71H ;对71H取反:作中断执行标志判断 CPL A MOV 71H,A ;------- MOV A,70H ;还原A值 SETB EA ;开总中断 RETI ;-------------------------------------------------- ;-------------------主程序------------------------- MAIN: MOV A,71H ;71H内容取反 CPL A MOV 71H,A MOV A,72H ;72H内容取反 CPL A MOV 72H,A ;71H -71H:为判断是否发生中断服务 ;--------- ACALL GETDATA ;调用预发送数据程序 ACALL DISPLAY ;调用显示程序 ACALL SENDDATA ;调用数据发送程序 LJMP MAIN ;返回MAIN ;------------------------------------------------- ;---------预发送数据程序-------------------------- GETDATA: CLR 00H ;个位按键标志位 CLR 01H ;十位按键标志位 ACALL DIWEI ;调用低半字节修改程序 ACALL GAOWEI ;调用高半字节修改程序 ACALL FUYONG ;调用按键复用程序 RET ;--低半字节处理程序------ DIWEI: JB P2.0,DIWEIRET ;P2.0:个位按键控制口:低电平有效 ACALL DELAY ;消抖 JB P2.0,DIWEIRET SETB 00H ;按键有效置标志位 INC 31H MOV R3,31H ;个位按键稳定性处理:按一次执行一次服务 CJNE R3,#01H,DIWEIRET INC 32H ;个位控制寄存器32H MOV R3,32H MOV 3BH,R3 ;个位数值寄存器3BH CJNE R3,#10H,DIWEIRET ;十六进制溢出处理 MOV 32H,#00H MOV 3BH,#00H ;溢出清零 DIWEIRET: RET ;---高半字节处理程序--- GAOWEI: JB P2.1,GAOWEIRET ;P2.1:十位按键控制口:低电平有效 ACALL DELAY ;消抖 JB P2.1,GAOWEIRET SETB 01H ;按键有效置标志位 INC 33H MOV R3,33H ;十位按键稳定性处理:按一次执行一次服务 CJNE R3,#01H,GAOWEIRET INC 34H ;十位控制寄存器34H MOV R3,34H MOV 3AH,R3 ;十位数值寄存器3AH CJNE R3,#10H,GAOWEIRET ;十六进制溢出处理 MOV 34H,#00H MOV 3AH,#00H ;溢出清零 GAOWEIRET: RET ;----按键复用程序----- FUYONG: JNB 00H,CLR31H ;标志位判断:个位计数处理 MOV R3,31H CJNE R3,#32H,NEXT MOV 31H,#01H INC 32H MOV R3,32H MOV 3BH,R3 CJNE R3,#10H,NEXT ;十六进制溢出处理 MOV 32H,#00H MOV 3BH,#00H ;溢出清零 LJMP NEXT CLR31H: MOV 31H,#00H ;下次执行初始化 NEXT: JNB 01H,CLR33H ;标志位判断:十位计数处理 MOV R3,33H CJNE R3,#32H ,FUYONGRET MOV 33H,#01H INC 34H MOV R3,34H MOV 3AH,R3 CJNE R3,#10H,FUYONGRET ;十六进制溢出处理 MOV 34H,#00H MOV 3AH,#00H ;溢出清零 LJMP FUYONGRET CLR33H: MOV 33H,#00H ;下次执行初始化 FUYONGRET: RET ;------------------------------------------------ ;-----------数据发送程序------------------------- SENDDATA: CLR 02H ;清标志位 ACALL ONSEND ;调用ONSEND函数 ACALL OFFSEND ;调用OFFSEND函数 RET ;SENDDATA函数返回 ONSEND: JB P2.2,SENDRET ;P2.2:发送按键控制口:低电平有效 ACALL DELAY ;消抖 JB P2.2,SENDRET SETB 02H ;按键有效置标志位 MOV R3,35H CJNE R3,#00H,SENDRET ANL 34H,#0FH ;屏蔽高半字节 MOV A,34H ;对应发送的高位 SWAP A ;高低字节交换 ANL 32H,#0FH ;对应发送的低位 ADD A,32H ;对应高低位数码管的内容 MOV SBUF,A WAIT: JNB TI ,WAIT ;发送等待 CLR TI SENDRET: RET OFFSEND: JNB 02H,CLR35H MOV 35H,#0FFH ;初始化处理 LJMP OFFRET CLR35H: MOV 35H,#00H OFFRET: RET ;-------------------------------- ;----------显示程序-------------- DISPLAY: ACALL JIESHOU ;调用接收数据处理程序 LCALL FASONG ;调用发送数据处理程序 LCALL YIWEI ;调用位选程序 LCALL SHOW ;调用显示程序 RET ;----------- JIESHOU: MOV A,72H CJNE A,71H,JIEHUAN ;判断是否中断执行 LJMP JIERET JIEHUAN: MOV A,72H MOV 71H,A ;标志还原处理 MOV A,36H ;前一状态高位右移:36H---38H MOV 38H,A MOV A,37H ;前一状态低位右移:37H---39H MOV 39H,A MOV A,30H ANL A,#0F0H ;接收数据处理:屏蔽低半字节 SWAP A MOV 36H,A ;高位赋36H MOV A,30H ANL A,#0FH ;接收数据处理:屏蔽高半字节 MOV 37H,A ;低位赋37H JIERET: RET FASONG: ANL 3AH,#0FH ;屏蔽发送当前状态高半字节 ANL 3BH,#0FH ;屏蔽发送当前状态低半字节 JNB 02H,SSRET MOV R3,3AH ;前一状态发送的数据高位保存显示:3AH--3CH MOV 3CH,R3 MOV R3,3BH ;前一状态发送的数据低位保存显示:3BH--3DH MOV 3DH,R3 SSRET: RET ;------数码管动态扫描位控制口控制程序--- YIWEI: MOV A,3EH RR A MOV 3EH,A MOV P1,A ;显示起点:P1.7----控制当前状态接收值的高位 RET SHOW: MOV A,@R0 ;初始值为36H的内容 MOVC A,@A+DPTR ;偏移量转移 MOV P0,A LCALL DELAY1 ;延时2MS:12MHZ INC R0 ;位控制口移位 CJNE R0,#3EH,SHOWRET ;动态扫描范围:36H--3DH:循环扫描 MOV R0,#36H ;初始化设置 SHOWRET: RET ;--------------------------------------------------- ;-------------------延时程序------------------------ DELAY: MOV R6,#50H ;延时40毫秒 LOOP1: MOV R7,#0FAH LOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 RET ;-------------------延时程序------------------------ DELAY1: MOV R6,#04H ;延时2毫秒 LOOP11:MOV R7,#0FAH LOOP21:DJNZ R7,LOOP21 DJNZ R6,LOOP11 RET ;-----------------数码管段代码表--------------------- TAB: DB 0FCH,60H,0DAH,0F2H,66H DB 0B6H,0BEH,0E0H,0FEH,0F6H DB 0EEH,3EH,9CH,7AH,9EH,8EH,00H END
本文档为【采用AT89S52单片机与MAX232芯片配合串口精灵软件,实现了单片机与计算机之间的双向通信简单的功能】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_037433
暂无简介~
格式:doc
大小:26KB
软件:Word
页数:11
分类:工学
上传时间:2017-09-26
浏览量:41