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

📄 main.asm

📁 富晶的MCU仿真器软件
💻 ASM
字号:
;/**************************************************************/  
;*	Clock example for FS9821.(1s->1 interrupt)               		   */	
;*     	 Function      Arthurs        Time          Version     Description      */
;*         Total      Gavannis.hsu  2005/01/09       0.1        Test version     */
;*	  Q1:can't  1s one interrupt?	A1.YES				   */
;*         Q2:The TMCLK depends on the MCK? A2:NO,depends on ECK  */
;/**************************************************************/


	INCLUDE        macro_FS9821.asm	 
	INCLUDE        Def_Mem_FS9821.asm

;Define	
	SecTemp   	   equ   0b0h
	MinTemp  	   equ   0b1h	
	HourTemp 	   equ   0b2h
	FLAG       	   equ   0b3h
		
	LED1Temp	   equ   0b4h
	LED2Temp	   equ   0b5h
	LED3Temp	   equ   0b6h
	LED4Temp       equ   0b7h	
	LED5Temp       equ   0b8h
	LED6Temp	   equ   0b9h
	
	NUMTemp1      equ  0bAH
	NUMTemp2      equ  0bBH
	BLtemp            equ  0bCH
	
	ORG    		00H
	GOTO  		INIT
	
	ORG    		04h
	BTFSS			INTF,5
	CALL  		TimerISR
	GOTO  		MAIN
	
INIT:
     MOVLW     	80h	;Clear data memory
     MOVWF      	FSR0
  CLEARRAM:
    CLRF        	IND0  
    INCFSZ     	FSR0,F
    GOTO       	CLEARRAM
    
;Select CLK Source
CLKINI:
	MOVLW	 00100001B 	;Set CLK Source & Timer
	MOVWF  	 MCK
	NOP

;/*Set Timer initial*/	 
;Enable Timer
TIMERINI:		
	MOVLW  	00h
	MOVWF  	TMCON
	NOP  
	
	MOVLW	90h		;Set Timer Interrupt Enable	
	MOVWF       	INTE
	NOP	
		
	MOVLW  	0fh
	MOVWF  	TMCON
	NOP
	
MAIN:
	HALT
	

;/*Timer Work*/	
TimerISR:	
	CLRF            INTF			;Clear Timer Flag
	MOVLF    	00H,TMCON		;Reset Timer
	MOVLF	90h,INTE		;Set    Timer Interrupt Enable		
	MOVLF    	0FH,TMCON		;Set    Timer Paramaters(1s)
	NOP		
			
	MOVFW    	SecTemp   
	ADDLW    	01H   
	SUBLW     	3CH			;-60
	BTFSS      	STATUS,0
	GOTO       	AddSec

;MIN:	
	MOVLF    	00H,SecTemp
	MOVFW   	 MinTemp
	SUBLW     	3BH			;-59	
	BTFSS      	STATUS,0
	GOTO       	AddMin

;HOUR:
	MOVLF     	00H,MinTemp	
	GOTO       	AddHour
	MOVFW    	HourTemp
	SUBLW     	17H			;-23
	BTFSS      	STATUS,0
	GOTO       	SUM
	GOTO       	ResetHour

SUM:						
	NOP


	
	
;Set LCD Display
LCD_Display:
;//LED DISPLAY
; Display (: :)
	COMF		LCD1,F
	MOVFW	LCD1
	ANDLW	50H			
	MOVWF      	LCD1
				
;Hour2	
	MOVFF    	HourTemp,AL
	CALL	      	TimeHex2BCD

	MOVFW   	BL
	ANDLW    	0FH
	MOVWF   	LED3Temp
	MOVFW   	LED3Temp
	Call	     	lcd_num		
	MOVWF      	LCD2 
	
	;Min1	
	MOVFF    	MinTemp ,AL
	CALL	      	TimeHex2BCD

	MOVFF   	BL,BLtemp	
	MOVFW   	BLtemp
	ANDLW    	0F0H	
	MOVWF   	LED3Temp
	RRF	     	LED3Temp,F
	RRF	     	LED3Temp,F
	RRF	     	LED3Temp,F
	RRF	     	LED3Temp,F
	MOVFW   	LED3Temp		
	MOVFW   	LED3Temp
	CALL	     	lcd_num	
	MOVWF      	LCD3 
	
	;Min2
	MOVFW   	BLtemp
	ANDLW    	0FH
	MOVWF   	LED4Temp
	MOVFW   	LED4Temp
	CALL	     	lcd_num
	MOVWF      	LCD4 
	
	;Sec1
	MOVFF    	SecTemp,AL  
	CALL	     	TimeHex2BCD
	
	MOVFF   	BL,BLtemp         
	MOVFW   	BL
	ANDLW    	0F0H
	MOVWF   	LED5Temp
	
	MOVFW    	BLtemp                 
	ANDLW    	00FH
	MOVWF   	LED6Temp
			
	RRF	     	LED5Temp,F
	RRF	     	LED5Temp,F
	RRF	     	LED5Temp,F
	RRF	     	LED5Temp,F
	MOVFW   	LED5Temp		
	CALL	     	lcd_num	
	MOVWF      	LCD5 
	
	;Sec2	
	MOVFW  	 LED6Temp
	Call	     	lcd_num
	MOVWF      	LCD6 
	
	MOVLW  	27h;		;Set LCD Driver
	MOVWF  	LCDENR
				
	RETFIE
	

AddSec:
	MOVFW    	SecTemp
	ADDLW    	01H
	MOVWF    	SecTemp
	GOTO       	SUM	  
	      
AddMin:
	MOVFW    	MinTemp
	ADDLW    	01H
	MOVWF    	MinTemp
	GOTO       	SUM
		
AddHour:
	
	MOVFW   	HourTemp
	ADDLW    	01H
	MOVWF    	HourTemp
	GOTO       	SUM

ResetHour:
	MOVLW   	00H
	MOVWF   	HourTemp
	GOTO      	SUM

;/*For Time Use<0x63H->99>*/
TimeHex2BCD:
	CLRF		BL
	CLRF		BLTemp
	MOVFF	AL,BLTemp
	
DEC:	;A=A-10,if A>=10 ,B=B+1
	MOVFW	BLTemp
	SUBLW	0AH
	BTFSS		STATUS,1
	GOTO		ADDH		
	GOTO		Break

ADDH:  ;
	SUBLW	00H
	BTFSC	STATUS,0	;EQU = 10
	GOTO		EQU
	MOVWF	BLTemp
	INCF		BL,F
	GOTO 	DEC
	
EQU:	if   A=10
	MOVLF	00H,BLTemp
	INCF		BL,F
	GOTO 	DEC
	
EQU1:	;if  A=10,for Display
	MOVLF	00H,BLTemp
	INCF		BL,F
	RETURN	
Break:	
	MOVFW	BLTemp	;SLOVE  =10 Question, 0x0A = 10
	SUBLW	0AH
	BTFSC	STATUS,0	;EQU = 10
	CALL		EQU1
	
	CLRF 		STATUS
	RLF		BL,F
	RLF		BL,F
	RLF		BL,F
	RLF		BL,F
	MOVFW	BL
	IORWF	BLTemp,W
	MOVWF	BL	
	RETURN
		
;LCD Table & Math libary	
INCLUDE        LCDINDX.ASM

end



⌨️ 快捷键说明

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