完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
5.ASM5_USART: 串口发送0-9及换行,接收任意数据并显示
/********************************************************************************* @file USART.asm* @author Alex——小白* @version V1.0* @date 2019.9.1* @brief 自动发送数据0-9和换行,接收的数据会打印该数据* @store 有家Proteus仿真店子* @Link * @Email ******************************************************************************* @attention All Rights Reserved **/ ORG 0000H ;程序执行的起始地址 LJMP Main ;跳转到main函数 ORG 0023H ;串口中断地址 LJMP UARTInterrupt ;声明UART是中断4函数名称 ORG 0100H ;程序跳转到0100H开始执行 Main: MOV SP,#60H LCALL InitUART ;初始化串口参数 MOV DPTR,#Num_Tab ;DPTR指向数组 MOV R0,#00H ;变量清零 While: MOV A,R0 ;变量赋值 MOVC A,@A+DPTR ;读取数组数据 LCALL SendOneByte ;串口打印数据 LCALL Delay ;延时1s INC R0 ;变量自加 CJNE R0,#0CH,Next ;判断是否为12,是清零,否则跳转 MOV R0,#00H Next: SJMP While InitUART: MOV TMOD,#20H ;2400bps MOV SCON,#50H ;设置波特率重装值(256-12000000/12/32/2400)=243=F3 MOV TH1,#0F3H ;赋初值 MOV TL1,TH1 MOV PCON,#00H SETB EA ;总中断开启 SETB ES ;串口中断开启 SETB TR1 ;定时器1中断开启 RET UARTInterrupt: PUSH ACC ;ACC值押栈,避免主循环使用冲突 JB RI,Is_Receive ;判断是否在接收数据 CLR TI ;否则清除发送标志位 RETI Is_Receive: CLR RI ;清除接收标志位 MOV A,SBUF ;将获取的数据储存到A LCALL SendOneByte ;接收数据,再发送出去 POP ACC ;AC值释放 RETI SendOneByte: CLR ES ;关闭串口中断 CLR TI ;清除发送标志位 MOV SBUF,A ;将数据A发送出去 SendFinish: JNB TI,SendFinish ;判断是否发送完毕 CLR TI ;是,则清除标志位 SETB ES ;开启串口中断 RET Delay: ;t=t1*8=1s,修改R5的值即可更改时间(不精准) MOV R5, #08H ;单周期,8次 D1: ;t1=t2*250=500*250=125000 MOV R6, #0FAH D2: MOV R7, #0FAH ;t2=250*2=500 D3: DJNZ R7, D3 ;R7=250自减,直到为0跳出循环,双周期 DJNZ R6, D2 ;R6=250自减,直到为0跳出循环,双周期 DJNZ R5, D1 ;R5=100自减,直到为0跳出循环,双周期 RET Num_Tab: ;0-9,0A0D换行 DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,0AH,0DH END/* MOV TMOD,#020H ;9600bps MOV TL1,#0FDH ;设置波特率重装值(256-11059200/12/32/9600)=253=FD MOV TH1,#0FDH*/ 1、学习目的 学习51单片机与PC的串口通信威廉希尔官方网站 。 2、学习内容 本实验单片机作发送方同时接收方,PC机作接收方同时发送方,单片机发送从0-9的数字,并在PC机上显示,并等待PC串口助手发数据。PC机上需要运行串口调试助手或直接使用Proteus虚拟串口。 串口波特率:根据晶振而变化,代码中给出了常见12M和11.0592M时钟的波特率2400、9600计算方法。 |
|
|
|
只有小组成员才能发言,加入小组>>
2497 浏览 0 评论
1062浏览 2评论
681浏览 1评论
443浏览 0评论
177浏览 0评论
295浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 22:20 , Processed in 0.929121 second(s), Total 50, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号