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

📄 ca745.asm

📁 EM447开发的带发射的代码 CA745
💻 ASM
📖 第 1 页 / 共 2 页
字号:
 ;**************************************************
;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_up      EQU        1
 Key_down    EQU        2
 _scl        EQU        6
 _sda        EQU        7
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
COUNT1       EQU        0X11
TEMP         EQU        0X12
flag         EQU        0X13
 ukey_dep    EQU        0
 dkey_dep    EQU        1
 inc_sta     EQU        2
 dec_sta     EQU        3
 inc_stop    EQU        4
 dec_stop    EQU        5
count_dw     EQU        0X14
count_dw1    EQU        0X15
;==========IIC=REG==========
device_addr  EQU        0x16
word_addr    EQU        0x17
TXBUF        EQU        0X18              ; TX buffer
RXBUF        EQU        0X19              ; RX buffer
;===========================
A1           EQU        0X1A
A2           EQU        0X1B
A3           EQU        0X1C
A4           EQU        0X1D

rf_frequ     EQU        0X1E
AA0          EQU        0X1F
AA1          EQU        0X20
div_l        EQU        COUNT
b_div        EQU        COUNT1 
l_byte       EQU        AA1
yu           EQU        AA0
;****************************************************
;    define the macro command
;****************************************************
SDA_O   MACRO
        IOR    P6
        AND    A,@0B01111111
        IOW    P6  
        ENDM
SDA_I   MACRO
        IOR    P6
        OR     A,@0B10000000
        IOW    P6      
        ENDM	

;**************************************************
;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    rf_adjust_process

        JMP     MAIN_PROCESS
;********************************************************************************************
;used: The RF-frequ adjusting process
;reg:
;wrt:  ProBoy  
;date: 2001.07.03
;********************************************************************************************
rf_adjust_process:	
	JBC             P6,Key_down
	JMP	        rf_adjust_inc_end
	JBS             P6,Key_up
	jmp	        rf_adjust_process_end
        JBC             flag,inc_sta
        JMP             data_adjust_inc
	JBS	        flag,dkey_dep
	jmp             $+3
        INC             count_dw
	jmp		rf_adjust_process_end1
	BS		flag,dkey_dep     
data_adjust_inc:
        JBS             flag,inc_sta
        JMP             $+6
        INC             count_dw1
        MOV             A,@0x02
        SUB             A,count_dw1
        JBS             STATUS,Z
        JMP             rf_adjust_dec_process
        CLR             count_dw1

        JBS             flag,inc_stop
        JMP             rf_adjust_dec_process
        INC             rf_frequ
        CALL            lcd_dis_data
        CALL            rf_adjust_process
        MOV             A,@205
        SUB             A,rf_frequ
        BC              flag,inc_stop
        JBC             STATUS,Z
        BS              flag,inc_stop
	jmp		rf_adjust_dec_process
rf_adjust_inc_end:
        BC              flag,inc_sta
	BC		flag,dkey_dep

rf_adjust_dec_process:
        JBC             P6,Key_up
	jmp		rf_adjust_dec_end
        JBC             flag,dec_sta
        JMP             data_adjust_dec
	JBS		flag,ukey_dep
	jmp             $+3
        INC             count_dw
        jmp		rf_adjust_process_end1 
        clr             count_dw
        BS              flag,ukey_dep 
data_adjust_dec:
        JBS             flag,dec_sta
        JMP             $+6
        INC             count_dw1
        MOV             A,@0x02
        SUB             A,count_dw1
        JBS             STATUS,Z
        JMP             rf_adjust_process_end
        CLR             count_dw1

        JBS             flag,dec_stop
        JMP             rf_adjust_process_end
        DEC             rf_frequ					
        CALL            lcd_dis_data
        CALL            rf_adjust_process
        MOV             A,rf_frequ
        BC              flag,dec_stop
        JBC             STATUS,Z
        BS              flag,dec_stop
	JMP		rf_adjust_process_end
rf_adjust_dec_end:
        BC              flag,dec_sta
	BC		flag,ukey_dep
        JMP             rf_adjust_process_end
rf_adjust_process_end1: 
        MOV             A,@0x02
        SUB             A,count_dw
        JBS             STATUS,Z
        jmp             rf_adjust_process_end
        JBS             P6,Key_down
        BS              flag,inc_sta
        JBS             P6,Key_up
        BS              flag,dec_sta
rf_adjust_process_end:    
	ret	
;***************************************************
;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:


        CLR     A4
        MOV     A,@0X08
        MOV     A3,A
        MOV     A,@0X07
        MOV     A2,A
        MOV     A,@0X05
        MOV     A1,A

        ENI

        RET

;********************************************************************************************
;used: the rf data inc 1 
;reg:
;wrt:  ProBoy
;date: 2001.07.03
;*******************************************************************************************
lcd_dis_data:
        CLR             A4
        MOV             A,@100
        MOV             b_div,A
        MOV             a,rf_frequ 
        MOV             div_l,A
        CALL            div_8bit
        MOV             A,l_byte
        MOV             A3,A

        MOV             A,@10
        MOV             b_div,A
        MOV             A,yu 
        MOV             div_l,A
        CALL            div_8bit
        MOV             A,l_byte
        MOV             A2,A   
        MOV             A,yu
        MOV             A1,A

        MOV             A,@0X05
        ADD             A,A1
        DAA             
        MOV             temp,A
        MOV             A,@0X0F
        AND             A,temp
        MOV             A1,A
        MOV             A,@0XF0
        AND             A,temp
        JBS             STATUS,Z
        INC             A2

        MOV             A,@0X07
        ADD             A,A2
        DAA             
        MOV             temp,A
        MOV             A,@0X0F
        AND             A,temp
        MOV             A2,A
        MOV             A,@0XF0
        AND             A,temp
        JBS             STATUS,Z
        INC             A3

        MOV             A,@0X08
        ADD             A,A3
        DAA             
        MOV             temp,A
        MOV             A,@0X0F
        AND             A,temp
        MOV             A3,A
        MOV             A,@0XF0
        AND             A,temp
        JBS             STATUS,Z
        INC             A4

        CALL            LCD_Display
        RET
;********************************************************************************************
;used: the rf data inc 1 
;reg:
;wrt:  ProBoy
;date: 2001.07.03
;********************************************************************************************
div_8bit:
        MOV             A,@0x08
        MOV             temp,A

⌨️ 快捷键说明

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