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

📄 cv870.asm

📁 CV870_接受的EM447的代码 与CA754一起构成接受发射代码
💻 ASM
字号:
 ;**************************************************
;DEFINE THE SPECIAL REGISTER
;**************************************************
INDF         EQU	0X00
TCC          EQU	0X01
PC           EQU	0X02
;------------------------------------
STATUS       EQU	0X03
 C           EQU	0	;CARRY FLAG,1=CARRY
 DC          EQU	1	;AUXILIARY CARRY FLAG,1=AUXILIARY CARRY
 Z           EQU	2	;ZERO FLAG,1=LOGIC OPERATION IS ZERO
 P           EQU	3	;POWER DOWN BIT
 T           EQU	4	;TIME-OUT BIT
 PS0         EQU	5	;
 PS1         EQU	6	;PS1-PS0 PAGE SELECT BIT
 GP          EQU	7	;GENERAL READ/WRITE BIT
;------------------------------------
FSR          EQU	0X04	
;------------------------------------
R3F          EQU	0X0F
 TCIF        EQU	0	;TCC OVERFLOWING INTERRUPT FLAG
 ICIF        EQU        1
 EXIF        EQU	2	;EXTERNAL INTERRUPT FLAG
;------------------------------------
P5           EQU	0X05
 SDA         EQU        1
 SCK         EQU        2
 SCE         EQU        3	
P6           EQU	0X06
 KEY         EQU        1
IOCB         EQU	0X0B	;ENABLE THE WAKE-UP FUNCTION OF P6 PORT
IOCC         EQU        0X0C
IOCD         EQU        0X0D
;-------------------------------------
IOCE         EQU	0X0E	;WDT CONTROL REGISTER
WUE          EQU	0	;ENABLE WAKE-UP FUNCTION OF P74~P75,0=ENABLE,1=DISABLE
ROC          EQU	3	;R-OPTION SETTING,1=ENABLE,0=DISABLE
SLPC         EQU	4	
WDTE         EQU	5	;ENABLE WDT TIMER,0=DISABLE,1=ENABLE
ODE          EQU	6	;OPEN-DRAIN OF P76 AND P77 PINS,0=DISABLE,1=ENABLE
;---------------------------------------
IOCF         EQU	0X0F	;INTERRUPT MASK REGISTER
 TCIE        EQU	0	;TCIF INTERRUPT ENABLE BIT,0=DISABLE,1=ENABLE
 ICIE        EQU        1 
 EXIE        EQU	2	;EXIF INTERRUPT ENABLE BIT,0=DISABLE,1=ENABLE
;---------------------------------------
CONT         EQU        0X01
;**************************************************
;DEFINE THE GENERAL PURPOSE REGISTER
;**************************************************
COUNT        EQU        0X10
TEMP         EQU        0X11
flag         EQU        0X12
 key_up      EQU        0

flag_setup   EQU        0X13





;**************************************************
;FOLLOWING IS THE PROGRAM AREA
;**************************************************
	
		
	ORG	0X000		;
	JMP	MAIN
                      
	ORG	0X008		;HARDWARE INTERRUPT ADDRESS
	JMP	HW_INT		;HARDWARE INTERRUPT
	
	ORG	0X010

;***************************************************
;THE HARDWARE INTERRUPT PROGRAM(/INT)
;USED REGISTER:
;WRITE BY liguangtao
;2005-08-16
;***************************************************	
HW_INT:	

        RETI	


;***************************************************	
;THE MAIN PROGRAM
;WRITE BY liguangtao
;2005-08-16
;***************************************************
MAIN:   
        NOP
       
	CALL    INIT_MCU
	
MAIN_PROCESS:
        CALL    delay_20ms
        BS      P5,0


        JBC	flag,key_up
	jmp	Frequ_setup1
        JBC     P6,KEY
	jmp	Frequ_setup0
	BS	flag,key_up      
        
        BC      flag,5
        BC	STATUS,C
	RRC	flag_setup
	JBC	STATUS,C
	BS	flag_setup,3
	jmp	Frequ_setup_end

Frequ_setup0:
	BC	flag,key_up
        jmp     Frequ_setup_end
Frequ_setup1:
        CALL    delay_20ms
        CALL    delay_20ms
        JBC     P6,KEY
	BC	flag,key_up    
Frequ_setup_end:

        JBC     flag,5
        jmp     MAIN_PROCESS
        BS      flag,5
        
        CALL    delay_20ms        
        BC      P5,0
        CALL    delay_20ms        
      
mode_1:
        JBS	flag_setup,0
        JMP     mode_2
        CALL    delay_20ms
       
        BS      P5,SCE
        CALL    delay_6us
        CALL    delay_6us

        MOV     A,@0X62
        CALL    SendData
        MOV     A,@0X69 
        CALL    SendData   
        MOV     A,@0XDC 
        CALL    SendData
        MOV     A,@0X9C
        CALL    SendData 
 
        CALL    delay_6us
        CALL    delay_6us
        BC      P5,SCE
        CALL    delay_2us
        BS      P5,SCK
        BS      P5,SDA
       
        JMP     MAIN_PROCESS
mode_2:
        JBS	flag_setup,3
        JMP     mode_3
        CALL    delay_20ms
       
        BS      P5,SCE
        CALL    delay_6us
        CALL    delay_6us

        MOV     A,@0X62
        CALL    SendData
        MOV     A,@0X6B 
        CALL    SendData   
        MOV     A,@0X1C
        CALL    SendData
        MOV     A,@0X9C
        CALL    SendData  
 
        CALL    delay_6us
        CALL    delay_6us
        BC      P5,SCE
        CALL    delay_2us
        BS      P5,SCK
        BS      P5,SDA
     
        JMP     MAIN_PROCESS
mode_3:
        JBS	flag_setup,2
        JMP     mode_4
        CALL    delay_20ms
       
        BS      P5,SCE
        CALL    delay_6us
        CALL    delay_6us

        MOV     A,@0X62
        CALL    SendData
        MOV     A,@0X6C 
        CALL    SendData   
        MOV     A,@0X5C
        CALL    SendData
        MOV     A,@0X9C
        CALL    SendData  
 
        CALL    delay_6us
        CALL    delay_6us
        BC      P5,SCE
        CALL    delay_2us
        BS      P5,SCK
        BS      P5,SDA

        JMP     MAIN_PROCESS
mode_4:
        JBS	flag_setup,1
        JMP     MAIN_PROCESS
        CALL    delay_20ms
       
        BS      P5,SCE
        CALL    delay_6us
        CALL    delay_6us

        MOV     A,@0X62
        CALL    SendData
        MOV     A,@0X6D
        CALL    SendData   
        MOV     A,@0X9C
        CALL    SendData 
        MOV     A,@0X9C
        CALL    SendData 
 
        CALL    delay_6us
        CALL    delay_6us
        BC      P5,SCE
        CALL    delay_2us
        BS      P5,SCK
        BS      P5,SDA     
        
        JMP     MAIN_PROCESS

;***************************************************
;INITIALIZE THE MCU 
;WRITE BY MARK.PENG
;2003-12-14
;***************************************************
INIT_MCU:
	DISI				;DISABLE INTERRUPT
	MOV	A,@0B01000111		;@0X07
	CONTW
	
	MOV	A,@0B00000000	        ;SET I/O DIRECTION,1=INPUT,0=OUTPUT
	IOW	P5
	MOV	A,@0B11111111
	IOW	P6			
	
	MOV     A,@0XFF
	IOW     IOCB
	MOV     A,@0X00
	IOW     IOCC
        MOV	A,@0X00
	IOW	IOCD
        MOV	A,@0X00
	IOW	IOCE	
	MOV	A,@0X00
	IOW	IOCF

	MOV	A,@0X11
	MOV	FSR,A
        MOV     A,@0X1F
        MOV     COUNT,A
CLR_GENERAL_REG:			;CLEAR ALL OF THE USER'S RAM
	CLR	INDF
	INC	FSR
        DJZ     COUNT
	JMP	CLR_GENERAL_REG
CLR_GENERAL_REG_END:
	BS	flag_setup,0
        BC      P5,SCE
        BS      P5,SCK
        BS      P5,SDA
        ENI
        RET
;***************************************************
;INITIALIZE THE MCU 
;WRITE BY MARK.PENG
;2003-12-14
;***************************************************
SendData:
        MOV  	        TEMP,A
        MOV		A,@0x08
	MOV  		count,a
LOOP1:
	BC    		P5,SCK
	call		delay_2us
	RLC		TEMP
	JBC   		STATUS,C
	BS    		P5,sda
	JBS   		STATUS,C
	BC    		P5,sda
	call		delay_2us
	BS    		P5,SCK
	call		delay_4us
	DJZ		count
	JMP		LOOP1
        RET
;*****************************************************************
;used: the delay for key
;reg:
;wrt:  ProBoy
;date: 2001.07.03
;*****************************************************************
delay_20ms:
        MOV    A,@0XC0
        MOV    COUNT,A
LOOP:
        CALL    delay_6us
        DJZ      COUNT
        JMP     LOOP
        RET
        
delay_6us:
	JMP		$+1
        JMP		$+1
delay_5us:
	JMP		$+1
        JMP		$+1
delay_45us:
delay_4us:
	JMP		$+1
        JMP		$+1
        JMP		$+1
delay_3us:
	JMP		$+1
        JMP		$+1
        JMP		$+1
delay_2us:
        JMP		$+1
        JMP		$+1
        JMP		$+1
        JMP		$+1
	ret
;----------------------------------------
        END

⌨️ 快捷键说明

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