⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hearter.dt

📁 这是一个小程序! 这是一个小程序! 这是一个小程序!
💻 DT
📖 第 1 页 / 共 2 页
字号:
		    ret			
meo_key_control:
			bc	   key_flag,3				;clr key ok flag 标志位完成任务后需清0
			
			jbc	  mode_flag0,0			  ;main on/off flag 执行下一步需检查电源开关键状态 
			ret
			                                   ;将按的次数进行计数,按一次加1
			inc	  main_mode                 ;进入菜单键后进行档位控制 
						
			mov	  a,main_mode
			sub	  a,@0x05                   ;让档位寄存器计数不超过5,因为一共是5档来决定 
			jbs	  r3,2					  ;Z flag
			jmp	  meo_key_control_0         ;不相等则跳到下一个子程序去判断   
			mov	  a,@0x00      
		    mov	  main_mode,a               ;通过赋初值让档位在5档之间循环			
			ret
meo_key_control_0:                             ;档位判断子程序 
			mov	 a,main_mode
			sub	 a,@0x01                    ;注意:0x01对应第二档 
			jbc	 r3,2                       ;与第二档数值进行判断 
			jmp	 meo_key_control_1
			mov	 a,main_mode
			sub	 a,@0x02                    ;注意:0x02对应第三档 
			jbc	 r3,2                       ;与第三档数值进行判断 
			jmp	 meo_key_control_2
			mov	 a,main_mode
			sub	 a,@0x03                    ;注意:0x03对应第四档 
			jbc	 r3,2                       ;与第四档数值进行判断 
			jmp	 meo_key_control_3
			mov	 a,main_mode
			sub	 a,@0x04                    ;注意:0x04对应第五档 
			jbc	 r3,2                       ;与第五档数值进行判断 
			jmp	 meo_key_control_4
			ret
meo_key_control_1:
			bc	  r6,5
			bc	  mode_flag0,1			;duty on/off flag
			mov	 a,@10       ;NB         ;作为第二档定时10秒的设置 
			mov	 duty_cnt,a              ;作为第二档定时10秒的设置 开始值 
			ret                                ;每一个子程序的返回都是回到主程序中去			
meo_key_control_2:
			bc	  r6,5
			bc	  mode_flag0,1			;duty on/off flag 标志位代表这种状态的实现 
			mov	 a,@20                   ;第三档以先停20秒r6,5口输出高电平为起点 
			mov	 duty_cnt,a              ;直接赋值将时间控制寄存器内的内容覆盖 
			ret
meo_key_control_3:
			bc	  r6,5
			bc	  mode_flag0,1			;duty on/off flag
			mov	 a,@20
			mov	 duty_cnt,a
			ret
meo_key_control_4:
			bc	  r6,5
			bc	  mode_flag0,1			;duty on/off flag
			mov	 a,@20
			mov	 duty_cnt,a
			ret			
;*****************************************************************************************
heat_control:                         ;
			wdtc
			jbc	 mode_flag0,0      ;用于判断输出与否标志,由上可知,键按下后此标志位为0  
			jmp	 power_off_ctr     ;
			mov	 a,main_mode       ;我认为这里不用再进行比较了,因为前面已经判断出了,
			sub	 a,@0x00           ;可以用标志位来确定,这样可以减少指令条数.
			jbc	 r3,2              ;状态寄存器第2位零标志位Z:算术或逻辑操作结果为零时置为1
			jmp	 heat_meo1_ctr      ;第一档 
			mov	 a,main_mode       ;我认为这里不用再进行比较了,因为前面已经判断出了,
			sub	 a,@0x01           ;可以用标志位来确定,这样可以减少指令条数.
			jbc	 r3,2              ;与第二档进行判断 
			jmp	 heat_meo2_ctr      ;第二档 
			mov	 a,main_mode       ;我认为这里不用再进行比较了,因为前面已经判断出了,
			sub	 a,@0x02           ;可以用标志位来确定,这样可以减少指令条数.
			jbc	 r3,2              ;与第三档进行判断 
			jmp	 heat_meo3_ctr      ;第三档 
			mov	 a,main_mode       ;我认为这里不用再进行比较了,因为前面已经判断出了,
			sub	 a,@0x03           ;可以用标志位来确定,这样可以减少指令条数.
			jbc	 r3,2              ;与第四档进行判断 
			jmp	 heat_meo4_ctr      ;第四档 
			mov	 a,main_mode       ;我认为这里不用再进行比较了,因为前面已经判断出了, 
			sub	 a,@0x04           ;可以用标志位来确定,这样可以减少指令条数.
			jbc	 r3,2              ;与第五档进行判断 
			jmp	 heat_meo5_ctr      ;第五档			
			ret
power_off_ctr:                             ;接上电后不输出信号程序 
			bc	  r6,5
			bc	  r5,0				   ;on led
			bc	  r5,1
			bc	  r5,2
			bc	  r5,3
			bc	  r6,1
			ret
heat_meo1_ctr:                             ;第一档执行程序 
			bs	  r6,5              ;P6.5口输出高电平 
			
			bs	  r5,0				   ;on led LED5灯亮 即P5.0口输出高电平 
			bc	  r5,1
			bc	  r5,2
			bc	  r5,3
			bc	  r6,1
			ret
heat_meo2_ctr:                             ;第二档执行程序 
			bc	  r5,0				   ;on led
			bs	  r5,1                   ;LED4灯亮 即P5.1口输出高电平 
			bc	  r5,2
			bc	  r5,3
			bc	  r6,1
			jbs	mode_flag0,1			;duty on/off flag 
			jmp	heat_meo2_ctr_0
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt
			ret
			bc	 r6,5					;on/off control pin  禁止P6.5口输出高电平 
			mov	a,@10                   ;数值用完后需重新赋初值 
			mov	duty_cnt,a              ;时间控制寄存器用来存储所要定时的时间 
			bc	 mode_flag0,1            ;作为10秒输出子程序的判断位 
			ret			
heat_meo2_ctr_0:                          ;第二档控制程序 
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt                ;进入第二档时已经设置10秒初值,P6.5口先停止输出 
			ret
			bs	 r6,5					;on/off control pin  P6.5口输出高电平 
			mov	a,@10                   ;数值用完后需重新赋初值 
			mov	duty_cnt,a              ;时间控制寄存器用来存储所要定时的时间常数 
			bs	 mode_flag0,1            ;作为停10秒输出子程序的判断位 
			ret				
					
heat_meo3_ctr:                             ;第三档执行程序 
			bc	  r5,0				   ;on led
			bc	  r5,1
			bs	  r5,2                   ;LED3灯亮 即P5.2口输出高电平 
			bc	  r5,3
			bc	  r6,1
			jbs	mode_flag0,1			;duty on/off flag
			jmp	heat_meo3_ctr_0
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt
			ret
			bc	 r6,5					;on/off control pin  禁止P6.5口输出高电平 
			mov	a,@20
			mov	duty_cnt,a
			bc	 mode_flag0,1
			ret			
heat_meo3_ctr_0:                          ;第三档控制程序 
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt               ;第三档开始时先禁止r6,5输出高电平 
			ret
			bs	 r6,5					;on/off control pin P6.5口输出高电平 
			mov	a,@05                  ;开始定时5秒输出高电平 
			mov	duty_cnt,a
			bs	 mode_flag0,1           ;高电平输出状态的标志位 
			ret
						
heat_meo4_ctr:                             ;第四档执行程序 
			bc	  r5,0				   ;on led
			bc	  r5,1
			bc	  r5,2
			bs	  r5,3                   ;LED2灯亮 即P5.3口输出高电平 
			bc	  r6,1
			jbs	mode_flag0,1			;duty on/off flag
			jmp	heat_meo4_ctr_0
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt
			ret
			bc	 r6,5					;on/off control pin  禁止P6.5口输出高电平 
			mov	a,@20
			mov	duty_cnt,a
			bc	 mode_flag0,1
			ret			
heat_meo4_ctr_0:                          ;第四档控制程序 
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt
			ret
			bs	 r6,5					;on/off control pin  P6.5口输出高电平 
			mov	a,@03
			mov	duty_cnt,a
			bs	 mode_flag0,1
			ret
						
heat_meo5_ctr:                             ;第五档执行程序 
			bc	  r5,0				   ;on led
			bc	  r5,1
			bc	  r5,2
			bc	  r5,3
			bs	  r6,1                   ;LED1灯亮 即P6.1口输出高电平 
			jbs	mode_flag0,1			;duty on/off flag
			jmp	heat_meo5_ctr_0
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt
			ret
			bc	 r6,5					;on/off control pin  禁止P6.5口输出高电平 
			mov	a,@20
			mov	duty_cnt,a
			bc	 mode_flag0,1
			ret			
heat_meo5_ctr_0:                          ;第五档控制程序 
			jbs	timer,0				;timer 1s flag
			ret
			bc	 timer,0
			djz	duty_cnt
			ret
			bs	 r6,5					;on/off control pin  P6.5口输出高电平 
			mov	a,@01
			mov	duty_cnt,a
			bs	 mode_flag0,1
			ret
;*****************************************************************************************
key_delay:                                 ;判别抖动所用的时间程序 
			mov	a,@0x50
			mov	del,a
			djz	del
			jmp	$-1
			ret
;*****************************************************************************************		
			end                            ;结束标志

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -