区块链技术博客
www.b2bchain.cn

51单片机串口应用实例(汇编)

这篇文章主要介绍了51单片机串口应用实例(汇编)的讲解,通过具体代码实例进行20683 讲解,并且分析了51单片机串口应用实例(汇编)的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=20683

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

51串口结合外部中断实例

  • 一、 实验题目
  • 二、 设计方案及电路
  • 三、 实验步骤
  • 四、 实验程序

一、 实验题目

猜数字小游戏:串行口发送0x01、0x02、0x03 HEX数据中的一个到51单片机,对应的按键key1-key3,发送数据之后,另一边人员猜测对应的HEX码,并按下对应的按键,若按下正确的按键,则LED灯闪烁,按下不正确的按键,则蜂鸣器响一下报错,程序可以一直执行到猜中停止,此时按下key4清空复位运行数据,等待下一个串口发送的数据进行下一次猜数字。

二、 设计方案及电路

设计方案:
串口通过定时器1产生9600波特率,接收中断里面处理接收数据,主循环里面对接收数据进行判断,根据不同的HEX码转换到不同的按键判断任务,通过扫描的方式读取KEY1-3,判断读取的值,如果与HEX码对应的按键不同,则跳转到蜂鸣器报警函数,执行后在返回按键扫描,若相同则跳转到流水灯函数,一直处于循环之中,通过按键4的外部中断清零状态,返回接收判断循环,等待下一次串口的数据来到。
电路图:

51单片机串口应用实例(汇编)

三、 实验步骤

  1. 编写串口初始化程序,配置中断接收内容
  2. 编写判断循环主体函数
  3. 根据主体判断循环的结果,编写各个按键判断循环
  4. 在按键判断循环里面编写按键扫描函数,判断按键按下的结果,正确跳转到流水灯循环函数,错误则跳转到蜂鸣器报错函数,执行蜂鸣器报警后返回按键扫描继续判断。
  5. 编写流水灯循环及蜂鸣器报警函数
  6. 编写按键key4的外部中断函数,使按键按下后跳转到初始判断循环函数,调试复位流水灯IO口

四、 实验程序

	ORG 	0000H 	LJMP	MAIN		 	ORG 	0003H							;INTO中断入口 	LJMP 	INTT0 	ORG 	0023H    						;串口中断入口 	LJMP 	RX_TI	 MAIN:										;初始化函数MAIN函数 	MOV		SCON,	#0X50					;串口初始化 	ANL		PCON,	#00H 	MOV		TMOD,	#0X20					 	MOV		TL1,	#0XFD					;波特率9600 	MOV		TH1,	#0XFD 	SETB	TR1								;开启中断 	SETB 	ES 	SETB 	EA 	 	SETB	RI 	 	SETB 	EX0 							;打开外部中断0 	SETB	IT0 							;跳变沿触发方式 LOOP:										;判断循环函数,判断串口接收的数据,跳转对应函数 	MOV		R4,		#00H 	MOV		A,		R3 	MOV		R7,		A 	CJNE	R7,		#01H,	JUDGE1			;0x01对应按键1判断 	LJMP	LOOP1 	JUDGE1:			 			CJNE	R7,		#02H,	JUDGE2	;0x02对应按键2判断 			LJMP	LOOP2 	JUDGE2: 			CJNE	R7,		#03H,	LOOP	;0x03对应按键3判断 			LJMP	LOOP3 	LJMP	LOOP 			 LOOP1:										;按键1判断循环函数 	MOV		P3,		#0FFH 	MOV		A,		P3 	CPL		A 	ANL		A,		#18H 	JNZ		KEY_WRONG						;扫描到不是不是按键1则跳转到蜂鸣器报错函数 	MOV		A,		P3 	ANL		A,		#20H 	JNZ		LOOP1 	LJMP	KEY_RIGHT						;扫描到按键1则跳转到流水灯函数 	LJMP	LOOP   LOOP2:										;按键2判断循环函数(与1同) 	MOV		P3,		#0FFH 	MOV		A,		P3 	CPL		A 	ANL		A,		#28H 	JNZ		KEY_WRONG 	MOV		A,		P3 	ANL		A,		#10H 	JNZ		LOOP2 	LJMP	KEY_RIGHT 	LJMP	LOOP 	 LOOP3:										;按键3判断循环函数(与1同) 	MOV		P3,		#0FFH 	MOV		A,		P3 	CPL		A	 	ANL		A,		#30H 	JNZ		KEY_WRONG 	MOV		A,		P3 	ANL		A,		#08H 	JNZ		LOOP3 	LJMP	KEY_RIGHT 	LJMP	LOOP 	 INTT0:										;按键4外部中断函数,复位LED的IO口,跳转返回判断循环 	PUSH	ACC 	SETB	P2^0 	ACALL	DELAY 	SETB	P2^1 	MOV		R4,		#01H 	MOV		R7,		#00H 	POP		ACC 	RETI 	 RX_TI:										;按键2判断循环函数(与1同) 	PUSH	ACC 	CLR		RI 	MOV 	R7,		SBUF 	ACALL	DELAY 	MOV		A,		R7 	MOV		R3,		A 	POP		ACC 	RETI 	 KEY_RIGHT:									;流水的循环函数 	CJNE	R4,		#00H,	LOOP 	SETB	P2^0 	CLR		P2^1 	ACALL	DELAY 	SETB	P2^1 	CLR		P2^0 	ACALL	DELAY 	LJMP	KEY_RIGHT	 	 KEY_WRONG:									;蜂鸣器报警函数 	CLR		P0^0 	ACALL	DELAY 	SETB	P0^0 	LJMP	LOOP  DELAY:										;延时函数							 	 MOV    R5,     #255 	 LOOP5: 		    MOV     R6,  #255 		    DJNZ    R6,  $			 	 DJNZ   R5,     LOOP5			 	 RET	  END 

本文转自互联网,侵权联系删除51单片机串口应用实例(汇编)

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 51单片机串口应用实例(汇编)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们