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

📄 io.asm

📁 HE48R/E05A 实现I/O模式的工作原理
💻 ASM
字号:
#include ht48r05A-1.inc
data .section 'data'
;----------Initialize 
count1 db ?
count2 db ?
count3 db ?
cotA db ?
cotB db ?
stp0 db ?
stp1 db ?
stp2 db ?
stp3 db ?
statetemp db ?
tempAF  db  00000000b
countAF  db 11111111b
tempkey db ?
;----------Procedural block, Port initializes
code .section at 0 'code'
     org 00h
     jmp start
start:
     clr pac
     clr pbc
     mov a,0ffh
     mov pcc,a
     clr pa
     clr pb
     clr pc
;-------Delay-Protect
    call DelayProtect     
    ;call DelayProtect
;----------Initialize systematically
     mov a,0
     mov statetemp,a
;----------Hoster procedure body 
we:
;-------Change New-Model
 state_change:  mov a,00000011b
            	and a,statetemp
				mov	stp0,a
				mov stp1,a
				mov stp2,a
  				mov stp3,a
;--------Model-Judgement 
                mov a,0
				xor a,stp0
                mov tempkey,a 
  				sz tempkey
				jmp change1
				jmp state0
       change1: mov a,00000001b
                xor a,stp1
				mov tempkey,a 
  				sz tempkey
				jmp change2
  				jmp state1
       change2: mov a,00000010b
                xor a,stp2
                mov tempkey,a 
  				sz tempkey
				jmp change3
				jmp state2
       change3: mov a,00000011b
                xor a,stp3
          		mov tempkey,a 
  				sz tempkey
				jmp state0 
;----------------Change Error
                jmp state3				
state0: mov a,10010010b
	  mov pa,a
      mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st01:
        call Delayn
      sdz cotB
 	  jmp st01
      sdz cotA
      jmp st01  
		clr pa		
	  mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st02:
        call Delayn
      sdz cotB
 	  jmp st02
      sdz cotA
      jmp st02
		jmp we
state1:  
         mov a,11001100b
		 mov pa,a
      mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st11:
         call Delayn
      sdz cotB
 	  jmp st11
      sdz cotA
      jmp st11
		 clr pa        
	  mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st12:
         call Delayn
      sdz cotB
 	  jmp st12
      sdz cotA
      jmp st12
		jmp we
state2:  mov a,11100111b
		 mov pa,a
	  mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st21:
        call Delayn
      sdz cotB
 	  jmp st21
      sdz cotA
      jmp st21
		clr pa     	
      mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st22:
        call Delayn
      sdz cotB
 	  jmp st22
      sdz cotA
      jmp st22
		jmp we
state3:  mov a,11110011b
		 mov pa,a
      mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st31:
        call Delayn
      sdz cotB
 	  jmp st31
      sdz cotA
      jmp st31
		clr pa		
	  mov a,1
      mov cotA,a
      mov a,5
      mov cotB,a
   	  st32:
        call Delayn
      sdz cotB
 	  jmp st32
      sdz cotA
      jmp st32
  jmp we
;Hoster prolong time processor bill
Delayn proc       
        sdz tempAF
        jmp  next
        jmp  changeAF      
                       nextAF: dec countAF
                               clr pb.2                                
   next:mov a,00000000b
        mov tempAF,a        
        mov a,pc
        and a,00000010b
        mov tempkey,a
		call delaykey
        mov a,pc
        and a,00000010b
		and a,tempkey
 		mov tempkey,a 
  	    sz tempkey
        jmp enddelay
 		jmp changeAF        
changeAF:
        set pb.2
                     sdz countAF
                     jmp conAF
                     jmp nextAF
   
  conAF:mov a,00000001b
        mov tempAF,a    
        mov a,pc
        and a,00000001b
        mov tempkey,a
		call delaykey
        mov a,pc
        and a,00000001b
		and a,tempkey
 		mov tempkey,a 
  		sz tempkey                   
        jmp enddelay
 		jmp changeINC                     
changeINC:
        ;call DelayProtect 
        clr pb.2
        mov a,00000000b
        mov tempAF,a 
        mov a,00000011b 
        and a,statetemp        
;=====    Model inc    ========
        inc statetemp 
        mov a,00000011b 
        and a,statetemp     
        mov statetemp,a
        mov pb,a
        jmp enddelay
enddelay: ret 
        Delayn endp
;----Press key disappears quiver delay 
delaykey proc
	mov a,64h
	mov count1,a
    mov a,0ffh
    mov count2,a
  del:
	sdz count2
    jmp del
    sdz count1
	jmp del
	ret
delaykey endp
DelayProtect proc
    mov a,00ah
    mov count1,a
    mov a,0ffh
    mov count2,a
    mov count3,a
  delp:
    sdz count3 
	jmp delp
    sdz count2
    jmp delp
    sdz count1
    jmp delp
    ret
DelayProtect endp

end  


⌨️ 快捷键说明

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