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

📄 遥控器s.asm

📁 红外线遥控器,可以作为工业仪器仪表的手持式控制器
💻 ASM
字号:
;************************************************************************
sel             equ      p1.7
jian            equ      p1.6
jia             equ      p1.5
seljian         equ      p1.4
seljia          equ      p1.3
jiajian         equ      p1.2
sd              equ      p3.7
;************************************************************************
;中断向量表
                      org 0000h
                      ljmp main
                      org 0003h       ;外部中断0
                      ljmp main
                      org 000bh       ;定时器/计数器0溢出
                      ljmp time0int
                      org 0013h       ;外部中断1
                      ljmp main
                      org 001bh       ;定时器/计数器1溢出
                      ljmp main
                      org 0023h       ;串行口
                      ljmp main
;*************************************************************************

;这是主控程序,
;              寄存器堆为:00H至07H
;              起始地址为:0100H
;              CPU的晶振频率为:1.0592MHZ
;              工作原理:  当三相不平衡时,中线上就会有一较大电流,如连续采样,该电流
;                         持续0.5S,即确定三相电源不平衡
;*************************************************************************
                  org 0100h
main:             mov sp,#30H
	          clr rs0
		  clr rs1 
;main1:		  lcall checkcpu       ;CPU内存单元检测
;		  cjne a,#00h,main1
main2:		  lcall initmachine    ; 调系统数据初使化 
		  lcall initcpu        ; 调CPU 初使化 		  		    	   
		  mov a,key
		  cjne a,#55h,main21
		  mov r7,#0ah           ;1s延时
main22:		  lcall yanshi
		  djnz r7,main22
		  mov r7,#0ah
		  setb tr0              ;已启动100us定时
		  mov key,#66h
		  mov a,workway
		  cjne a,#11h,main3
                  mov workway,#00h
main21:           mov a,workway 
main3:		  cjne a,#00h,main4          
                  sjmp main21
                  
main4:            cjne a,#55h,main5
                  mov r3,#05h
main42:           lcall yanshi
                  mov a,p1
                  anl a,#0fch
                  cjne a,#0f8h,main41
                  mov p1,#0fch
                  djnz r3,main42                  
                  mov r3,#05h
main45:           clr led_0
                  clr out_0
                  mov workway,#0ffh                  
                  mov r5,#0f0h                ;10分钟延时
main44:           mov r4,#19h                ;2.5s延时
main43:           lcall yanshi
                  djnz r4,main43
                  djnz r5,main44
                  mov r4,#19h
                  mov r5,#0f0h
                  setb out_0
                  setb led_0
                  lcall yanshi
                  lcall yanshi
                  lcall yanshi
                  mov a,p1
                  anl a,#0fch
                  cjne a,#0f8h,main41
                  mov workway,#55h
                  mov r3,#05h
                  sjmp main4
main41:           setb out_0
                  setb led_0
                  mov r4,#19h 
                  mov r5,#0f0h                                   
                  mov r3,#05h
                  mov tl0,#0a3h
                  mov th0,#0ffh
                  mov workway,#00h
                  mov key,#66h
                  setb tr0
                  sjmp main21                            
main5:            cjne a,#0ffh,main6
                  clr tr0
                  sjmp main45
main6:            clr tr0
                  mov key,#55h
                  ljmp main                    
;*************************************************************************
; 系统数据初使化
initmachine:      mov p1,#0fch
                  mov p3,#0ffh
                  mov workway,#11h
                  mov key,#55h
                  mov r3,#05h  
                  mov r4,#19h 
                  mov r5,#0f0h               
                  ret
;************************************************************************ 
;************************************************************************
;   CPU内存检测
;出错:  A=0FFH,p1.7=0(ceshi)        正常:    A=00H,p1.7=1(ceshi)
;************************************************************************
;checkcpu:        mov r0,#00h
;                 mov r1,#20h
;checkcpu1:       mov a,#55h
;                 mov @r0,a
;                 mov a,@r0
;                 cjne a,#55h,checkcpu2
;                 mov a,#0aah
;                 mov @r0,a
;                 mov a,@r0
;                 cjne a,#0aah,checkcpu2
;                 inc r0
;                 djnz r1,checkcpu1
;                 mov a,#00h
;                 setb ceshi
;                 ret
;checkcpu2:       mov a,#0ffh
;                 clr ceshi
;                 ret
;***********************************************************************
 ;**********************************************************************
;对CPU中有关的SFR进行初始化
;***********************************************************************
initcpu:       ;  mov tmod,#01h
                 mov tcon,#00h
                 mov ie,#00h   
;**********************************************************************
;设置定时器0  ;定时100us
;定时器0:设置成由TR0使能工作方式
;        它是对内部时钟进行定时操作
;        它按十六位计数,在中断处理中重新设置
;***********************************************************************
		        mov tmod,#01h
		        mov tl0,#0a3h
		        mov th0,#0ffh   
;***********************************************************************
 ;设置中断优先级控制寄存器
;***********************************************************************
		        mov ip,#02h
		        clr  es        ;禁止串口中断
		        setb et0       ;定时器0允许中断
		        setb ea        ;开放所有中断       
                        ret
;***********************************************************************  
time0int:               clr tr0 
time0int1:              mov a,p1
                        anl a,#0fch
                        cjne a,#0f8h,time0int2
                        mov workway,#55h
                        mov a,workway
                        mov key,#66h
                        mov tl0,#0a3h
                        mov th0,#0ffh
                        mov p1,#0fch      
                        reti
time0int2:              mov tl0,#0a3h
                        mov th0,#0ffh                      
                        setb tr0
                        mov workway,#00h
                        mov a,workway
                        mov key,#66h         
                        reti  
;***********************************************************************
;延时100ms
yanshi:                mov r2,#64h
yanshi1:               mov r1,#0ah
dl2:                   mov r0,#18h
dl1:                   nop
                       nop
                       djnz r0,dl1
                       nop
                       djnz r1,dl2
                       djnz r2,yanshi1
                       ret
;**********************************************************************
                                 

⌨️ 快捷键说明

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