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

📄 zygd.asm

📁 利用点阵显示显示中文字符
💻 ASM
📖 第 1 页 / 共 4 页
字号:
continu_int1    movlw	   0x14
		subwf	   ledaddress,f
		goto	   continu_int

JKJKE:            
                  MOVF INDF, 0 		
			MOVWF BITTM
			
                        BTFSC BITTM, 7
			BCF PORTA,SDI
			BTFSS BITTM,7
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
	
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 6
			BCF PORTA, SDI
			BTFSS BITTM, 6
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 5
			BCF PORTA, SDI
			BTFSS BITTM, 5
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 4
			BCF PORTA, SDI
			BTFSS BITTM, 4
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 3
			BCF PORTA, SDI
			BTFSS BITTM, 3
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 2
			BCF PORTA, SDI
			BTFSS BITTM, 2
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 1
			BCF PORTA, SDI
			BTFSS BITTM, 1
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        
		        BTFSC BITTM, 0
			BCF PORTA, SDI
			BTFSS BITTM, 0
			BSF PORTA, SDI
			BSF PORTA, CLK1
	            NOP
	            NOP
	            NOP
		        BCF PORTA, CLK1
		        bcf  status,rp0
		        return
		

;*****************************************
;*          fill data to ram             *
;*****************************************
fill_data       movf       startaddress,w
                movwf      FSR
                movf       optiondata,w
fill_loop       clrwdt
		movwf      INDF
                incf       FSR,f
                decfsz     ledcounter,f
                goto       fill_loop
		movlw	0x20
		movwf	FSR
                return
;*****************************************
;*            READ KEY STATUS            *
;*****************************************
Read_key:
		clrwdt
		bcf	INTCON,GIE
		bcf	Flag1,updateF
		bsf     STATUS,RP0            ;//select ram bank1
                movlw	0xff
                movwf	TRISB
                bcf     STATUS,RP0 
		;BSF	PORTC,ROW_OUT
		bcf	PORTC,IN1CE
		NOP
 		NOP
		movf	PORTB,w
		movwf	tempa
		bsf	PORTC,IN1CE
;;********************************************
		nop
		nop
		nop
		bcf	PORTC,IN2CE
		nop
		movf	PORTB,w
		movwf	tempb
		bsf	PORTC,IN2CE

;***********************************************
		BSF	INTCON,GIE
		movlw	0xff
		subwf	tempa,w
		btfss	STATUS,Z
		goto	Usedkey
		movlw	0xff
		subwf	tempb,w
		btfss	STATUS,Z
		goto	Usedkey
		
		;goto	Usedkey
	
	
		btfss	Flag1,ACsignalF
		goto	Getkey_pre0
		decfsz	key_count1,f
		goto	Read_key
		decfsz	key_count2,f
		goto	Read_key
		bcf	Flag1,ACsignalF
		bsf	Flag1,AllffF
		;goto	Usedkey_0    ;no key
		goto	Usedkey
Getkey_pre0:
		bsf	Flag1,ACsignalF
		movlw	d'150'
		movwf	key_count1
		movlw	d'2'
		movwf	key_count2
		goto	Read_key
Usedkey:
		bcf	Flag1,AllffF
Usedkey_0:
		movf	tempa,w
		subwf	tkeya,w
		btfss	STATUS,Z
		goto	exitreadkey

		movf	tempb,w
		subwf	tkeyb,w
		btfss	STATUS,Z
		goto	exitreadkey

;;-------------------------------------
		btfss	Flag1,PoweronF
		goto	deal_key
		bcf	Flag1,PoweronF
		bsf	Flag1,updateF
		return

;;;-------------------------------------------
exitreadkey:
		movf	tempa,w
		movwf	tkeya
		movf	tempb,w
		movwf	tkeyb
		movlw	0x40
		movwf	key_count3
		return
;;;---------------------------------------------
deal_key:
		movf    tkeyb,w                ;stardand is 1 2 3 4 5 6  7   8     9   10
                subwf	keyb,w
                btfsc	STATUS,Z
                goto	read_keyax
                goto	key_change
                                                   ;    tkeyb   x x  x  x  x  x  up  down
read_keyax	movf	tkeya,w
		subwf	keya,w
		btfss	STATUS,Z
		goto	key_change
		RETURN

key_change


                decfsz	key_count3,f
		return
		bsf	Flag1,updateF
		btfsc	Flag1,AllffF
		return
		bcf	INTCON,GIE
		movf	tkeyb,w
                movwf   keyb                   ;             dec code    up down  stop o/s
                movf	tkeya,w
                movwf	keya                                   ;    tkeya   o/s  stop   6 5 4 3 2 1
                movlw	0x00
                movwf	tdatactrl
		btfss   tkeya,0
                bsf     tdatactrl,7         ;//tdatactrl,5  ;----out of service-----;
                btfss   tkeya,1
                ;btfsc   tkeya,1
                bsf     tdatactrl,2         ;//tdatactrl,4  ;----STOP-------;

                btfss   tkeya,3
                bsf     tdatactrl,1         ;//tdatactrl,3  ;-----over load-----;
                btfss   tkeya,2
                bsf     tdatactrl,0         ;//tdatactrl,2  ;------arrow stop-----;
                movlw	0x03
		andwf	tdatactrl,w
		movlw	0x03
		btfsc	STATUS,Z
		iorwf	tdatactrl,f
		clrf	tempa
                ;btfss	tkeyb,1    ;高位检测
               ; bsf	tempa,0    
               ; btfss	tkeyb,0    ;地位检测
                ;bsf	tempa,1
                ;btfss	tkeya,7
               ; bsf	tempa,2
               ; btfss	tkeya,6
               ; bsf	tempa,3
               ; btfss	tkeya,5
               ; bsf	tempa,4
                ;btfss	tkeya,4
                ;bsf	tempa,5
               btfss    tkeya,0
               bcf      tkeya,0
               bsf      tkeya,0
               btfss    tkeya,1
               bcf      tkeya,1
               bsf      tkeya,1
               btfss    tkeya,2
               bcf      tkeya,2
               bsf      tkeya,2


             ;comf   tkeya,w
             ;movwf   tempa
             ;comf   tkeyb,w
             ;movwf   tempb

             ;swapf   tempb,f
             ; movf    tkeya,w
              swapf   tkeya,f
              movf    tkeya,w
              movwf   tempa
              movlw   B'01111111'
              ANDWF   tempb,f
        

                movlw	0x03
                btfsc	tdatactrl,7
		iorwf	tdatactrl,f
		movf	tempa,w
		btfss	STATUS,Z
		goto	Get_Floor
		movlw	0xff
		movwf	tdataleft
		movwf	tdataright
		return
Get_Floor       ;查表子程序
                       ;   abcdefg               ;存储7段显示码10个从0~9存储到F0~F9
                BSF     STATUS,RP0               ;选择BANK1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                
                ;movlw    B'0000001'  ;数字0代码   ;存储7段显示码10个从0~9存储到F0~F9
                ;movwf    F0
                movlw    B'1000000'  
                 movwf   number0
                ;movlw    B'1001111'  ;数字1代码
                ;movwf    F1
                movlw    B'1111001'  
                movwf   number1
                ;movlw    B'0010010'  ;数字2代码
                ;movwf    F2   
                movlw    B'0100100'
                movwf   number2             
                movlw    B'0000110'  ;数字3代码
                ;movwf    F3
                movlw    B'0110000'  
                movwf   number3
                
                ;movlw    B'1001100'  ;数字4代码
                ;movwf    F4  
                movlw    B'0011001'  
                movwf   number4                                
                ;movlw    B'0100100'  ;数字5代码

                movlw    B'0010010' 
                ;movwf    F5   
                movwf   number5
                ;movlw    B'0100000'  ;数字6代码

                movlw    B'0000010' 
                ;movwf    F6   
                movwf   number6
                
                ;movlw    B'0001111'  ;数字7代码
                ;movwf    F7  

                movlw    B'1111000' 
                movwf   number7
                movlw    B'0000000'  ;数字8代码
                ;movwf    F8
                movwf   number8
                ;movlw    B'0000100'  ;数字9代码
                ;movwf    F9  

                movlw    B'0010000'                
                movwf   number9
                MOVLW    B'00000000'
                ;MOVWF    F10
                movwf   number      ;存放查找的数字
                movlw   B'00001010'          ;查找10次循环
                movwf   number11    ;存放查找的次数  
                ;movlw    f0
                ;movlw     number
                ;movwf    FSR
                MOVLW     B'11110000'
                MOVWF    FSR
                ;movfw    tempb
  loopfloor:    ;MOVF     FSR,W
                 ;MOVFW     FSR
                 movf      INDF,w
                  
                BCF       STATUS,RP0   ;选择BANK0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                SUBWF    tempb,w
                btfss    status,z
                goto     loopfloor0
                ;goto     floornumber
                BSF       STATUS,RP0   
                movf     number,W
                BCF       STATUS,RP0   
                movwf     tdataright
                BCF       STATUS,RP0   ;选择BANK0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                GOTO    HIGHFLOOR
 loopfloor0     
                BSF     STATUS,RP0               ;选择BANK1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
                incf      FSR,f
                incf      number,f
                
                decfsz      number11,f
                
                goto      loopfloor 
                goto      lggug  
                      
                return
                
lggug            
                movlw     B'0100000'
                 
                BCF       STATUS,RP0 
                CLRZ                
                SUBWF     tempb,w
                btfss     status,z
                goto      HIGHFLOOR
                ;ruturn
               BCF       STATUS,RP0   ;选择BANK0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                movlw     B'00010000'        ;把字符G送到tdataright
                movwf     tdataright
                ;return
                GOTO    HIGHFLOOR
;gue             
                ;movlw     B'0100000'               
                ;SUBWF     tempb,w
                ;btfss     status,z
                ;goto      gue
                ;movlw     g        ;把字符G送到tdataright
                ;movwf     tdataright
               ; return                
;;;;;;;;;;;;上面是低位楼层判断,以下是高位判断
              ; movfw    tempa
HIGHFLOOR       
                BCF       STATUS,RP0   ;选择BANK0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                swapf     tempa,f ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;调试时所加的
                movlw    B'00001111'
                andwf      tempa,f
                movlw     B'00001111'
                SUBWF     tempa,z   ;低四位为1111表示楼层高位没有
                goto      others
                return

others          
                BCF       STATUS,RP0   
                movlw    B'00001111'
                andwf      tempa,f
                movlw     B'00001001'
                SUBWF     tempa,z   ;低四位为1001表示楼层高位为1
                goto      others1
                movlw     1
                movwf     tdataleft
                return 
                
others1         
               BCF       STATUS,RP0   
                movlw    B'00001111'
                andwf      tempa,f
                movlw     B'00001011'
                SUBWF     tempa,z   ;低四位为1001表示楼层高位为2
                goto      others2
                movlw     2
                movwf     tdataleft
                return  

others2         
                BCF       STATUS,RP0   
                movlw    B'00001111'
                andwf      tempa,f
                movlw     B'00000000'
                SUBWF     tempa,z   ;低四位为1001表示楼层高位为1
                goto      others3 ;;;低四位为0000表示楼层高位为u
                movlw     B'00011111'         ;u返回的代码是1f
                movwf     tdataleft
                return 

others3         
                BCF       STATUS,RP0   
                movlw    B'00001111'
                andwf      tempa,f
                movlw     B'00000110'
                SUBWF     tempa,z   ;低四位为1001表示楼层高位为L
                goto      others4
                movlw     B'00010101'; L返回的代码是15h
                movwf     tdataleft
                return                                               
others4         BCF       STATUS,RP0   
                movlw    B'00001111'
                andwf      tempa,f
                movlw     B'00001110'
                SUBWF     tempa,z   ;低四位为1110表示楼层高位为没有
                ;goto      others2
                ;movlw     L
                ;movwf     tdataleft
                return         
;以上是检测楼层的高位字节检测后的楼层信息存储在tdataleft                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                                                       
                   
   
              ;  addwf	tempa,f
              ;  swapf	tempa,f
              ;  movlw	0x0f       ;把高四位设置为零
              ;  andwf	tempa,w    ;把高四位设置为零
              ;  iorlw	0x70       ;把高四位设置为0111.
              ;  movwf	romaddress
              ;  call	BStart
              ;  call	Deviceadd
              ;  call	Send1Byte
              ;  call	Wordadd
              ;  swapf	tempa,f
              ;  movlw	0x0f
              ;  andwf	tempa,w
              ;  iorwf	romcounter,f
               ; call	Send1Byte
              ;  call	BStart
	;	call	Deviceadd
;		bsf	romcounter,0
;		call	Send1Byte
;		call	Read1Byte
;		movf	romcounter,w
;		movwf	tdataright
;		call	ACK
;		call	Read1Byte
;		movf	romcounter,w
;		movwf	tdataleft
;		call	NACK
;		call	BStop
;		clrwdt
;		bcf     PIR1,TMR2IF
;		return


;*****************************************
;*       processs test sign              *
;*****************************************
test_stop        clrwdt
		 nop
                 bsf         displayflag,2
clrall           movlw       0xFF                ;clear all memory from 40~7f
                 movwf       optiondata
                 movlw       0x50
                 movwf       startaddress
                 movlw       0x14
                 movwf       ledcounter
                 call        fill_data
                 return
;*****************************************
;*  PROGRAMM START UP AND INIT ALL PORT  *
;*****************************************
Start           
                nop
                nop
                
                movlw      0x65		;14            ;speed of moving arrow
                movwf      rcounterh

ddloop2         
                clrwdt
                decfsz     rcounterh,f
                goto       ddloop2

                BCF	INTCON,GIE
                bcf       STATUS,RP1   ; only for 67
                bsf       STATUS,RP0
		    movlw	 0x06
		    movwf	 ADCON1
		    bcf	 STATUS,RP0
                CLRWDT
		    clrf      PORTA
		    ;mov

⌨️ 快捷键说明

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