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

📄 2ifinput.asm

📁 tenx radio pll ic tr1002 and radio ic ta2111 and refence code .
💻 ASM
📖 第 1 页 / 共 4 页
字号:
.chip TM87P08
;FM-AM Radio TM87P08+Tr1002+2111
;Author:江振/2005.12.22 
;Power Source:3V 
;Clock Source:Dual Clock 
;FM:87M-108.0M 步进0.1M (中频信号从IFIN1输入)
;AM:522K-1710K 步进9K   (中频信号从IFIN2输入)
;************************************************************ 
.HEAD 
; Display address 
COM1	equ	00001110B 
COM2	equ	00001101B
COM3	equ	00001011B 
COM4	equ	00000111B 
None	equ	00001111B

SEG2	equ	0e0h
SEG1	equ	0e1h
SEG4	equ	0e2h
SEG3	equ	0e3h
SEG6	equ	0e4h
SEG5	equ	0e5h
SEG8	equ	0e6h
SEG7	equ	0e7h
SEG10	equ	0e8h
SEG9 	equ	0e9h
SEG12	equ	0eah
SEG11	equ	0ebh
SEG14	equ	0ech
SEG13	equ	0edh
SEG16	equ	0eeh
SEG15	equ	0efh

SEG18	equ	0f0h
SEG17	equ	0f1h
SEG20	equ	0f2h
SEG19	equ	0f3h
SEG22	equ	0f4h
SEG21	equ	0f5h
SEG24	equ	0f6h
SEG23	equ	0f7h
SEG26	equ	0f8h
SEG25	equ	0f9h
SEG28	equ	0fah
SEG27	equ	0fbh
SEG31	equ	0fch
SEG29	equ	0fdh
SEG41	equ	0feh
SEG40	equ	0ffh
;*********************************
FMDispFreqUMax    equ     1
FMDispFreqHMax    equ     0
FMDispFreqMMax    equ     8
FMDispFreqLMax    equ     0 
FMDispFreqUMin    equ     0
FMDispFreqHMin    equ     8
FMDispFreqMMin    equ     7
FMDispFreqLMin    equ     0

FMBottomPrgCountU equ     04h     ;87.0MHz Hex format  
FMBottomPrgCountH equ     0Ch     ;                     
FMBottomPrgCountM equ     05h     ;87.0M+10.7M/5K=(19540)d=(4C54)h                     
FMBottomPrgCountL equ     04h  
                          
FMTopPrgCountU    equ     05h     ;108.0MHz Hex format                     
FMTopPrgCountH    equ     0Ch     ;108.0M+10.7M/5K=(23740)d=(5CBC)h                                        
FMTopPrgCountM    equ     0Bh                                              
FMTopPrgCountL    equ     0Ch                                              

FMOneStepCountU   equ     00h     
FMOneStepCountH   equ     00h    
FMOneStepCountM   equ     01h     ;FM步进=0.1M/5K=(20)d=(14)h                                                                         
FMOneStepCountL   equ     04h    
;*******************************
AMDispFreqUMax    equ     1
AMDispFreqHMax    equ     7
AMDispFreqMMax    equ     1
AMDispFreqLMax    equ     0 
AMDispFreqUMin    equ     0
AMDispFreqHMin    equ     5
AMDispFreqMMin    equ     2
AMDispFreqLMin    equ     2

AMBottomPrgCountU equ     01h     
AMBottomPrgCountH equ     04h                        
AMBottomPrgCountM equ     04h   ;(522K+450K)*16/3K=(5184)d=(1440)h                     
AMBottomPrgCountL equ     00h   
                          
AMTopPrgCountU    equ     02h                         
AMTopPrgCountH    equ     0Dh   ;(1710K+450K)*16/3K=(11520)d=(2D00)h                                        
AMTopPrgCountM    equ     00h                                            
AMTopPrgCountL    equ     00h                                              

AMOneStepCountU   equ     00h     
AMOneStepCountH   equ     00h    
AMOneStepCountM   equ     03h   ;AM步进=9K*16/3K=(48)d=(30)h                                                                        
AMOneStepCountL   equ     00h     
;***********************************
DA_Low          equ     1110B   ;IOA1
DA_High         equ     0001B   ;IOA1

CK_Low          equ     1101B   ;IOA2
CK_High         equ     0010B   ;IOA2

CE_Low          equ     1011B   ;IOA3
CE_High         equ     0100B   ;IOA3

Mute_Low        equ     0111B   ;IOA4
Mute_High       equ     1000B   ;IOA4   

BandSwitch_Low  equ     1011B   ;IOB3
BandSwitch_High equ     0100B   ;IOB3

IO1_Low         equ     1101B   ;IOB2
IO1_High        equ     0010B   ;IOB2 

Power_Low       equ     1110B   ;IOB1
Power_High      equ     0001B   ;IOB1
                                             
.ENDH
.DATA
;**************************************************************************
	 org   00H
AddrL            dn    1   ;00h   ;AM FM data register
AddrH            dn    1   ;01h
PrgCountL        dn    1   ;02h   
PrgCountM        dn    1   ;03h
PrgCountH        dn    1   ;04h  
PrgCountU        dn    1   ;05h
Freq0            dn    1   ;06h
Freq1            dn    1   ;07h
DispFreqL        dn    1   ;08h
DispFreqM        dn    1   ;09h 
DispFreqH        dn    1   ;0Ah 
DispFreqU        dn    1   ;0Bh
DispSaveL        dn    1   ;0Ch
DispSaveM        dn    1   ;0Dh 
DispSaveH        dn    1   ;0Eh
DispSaveU        dn    1   ;0Fh  
Counter1         dn    1   ;10h;125MS计时 
Counter2         dn    1   ;11h;常按键计时
AutoScanFlag     dn    1   ;12h
KeyHoldFlag      dn    1   ;13h
CycScanKeyFlag   dn    1   ;14h
EverHoldFlag     dn    1   ;15h               
KeyValue         dn    1   ;16h  
KeySave          dn    1   ;17h
;=======================
IC24C02Addr1     dn    1   ;18h
IC24C02Addr2     dn    1   ;19h
IC24C02Buff1     dn    1   ;1Ah
IC24C02Buff2     dn    1   ;1Bh
ReceiveData      dn    1   ;1Ch
ReceiveTime      dn    1   ;1Dh
MemoryNum        dn    1   ;1Eh
;=======================
FixZero          dn    1   ;1Fh
RAMROMFlag       dn    1   ;20h  ; "1"=> read RAM  "0"=> read ROM 
GlobalTemp0      dn    1   ;21h  
GlobalTemp1      dn    1   ;22h
GlobalTemp2      dn    1   ;23h
GlobalTemp3      dn    1   ;24h
SysModeFlag      dn    1   ;25h  ;"0"=>FM  "1"=>AM  
;=======================
AMPrgCountL      dn    1   ;26h   
AMPrgCountM      dn    1   ;27h
AMPrgCountH      dn    1   ;28h  
AMPrgCountU      dn    1   ;29h
AMDispFreqL      dn    1   ;2Ah
AMDispFreqM      dn    1   ;2Bh 
AMDispFreqH      dn    1   ;2Ch 
AMDispFreqU      dn    1   ;2Dh
FMPrgCountL      dn    1   ;2Eh   
FMPrgCountM      dn    1   ;2Fh
FMPrgCountH      dn    1   ;30h  
FMPrgCountU      dn    1   ;31h
FMDispFreqL      dn    1   ;32h
FMDispFreqM      dn    1   ;33h 
FMDispFreqH      dn    1   ;34h 
FMDispFreqU      dn    1   ;35h
;**************************************************************************
	 org   70H
WorkReg          dn   	7     
Halt15ms         dn     1  ;77h   
PortAState       dn     1  ;78h 
PortBState       dn     1  ;79h
HaltPortC        dn     1  ;7Ah 
;**************************************************************************
.ENDD
;**************************************************************************
; program
;**************************************************************************
.CODE
;*****************************************************************************
;*****************************************************************************
		         org	00h
		         jmp	Initialize
Initialize: 
                rf2     04h        ;Open LCD Segment OutPut
		sca     000000B    ;prevent port A and C halt release
		sie*    0000000B   ;prevent all interrupts
		sre     0000000B   ;prevent all stop release source
	        plc     100101111B ;clear all the halt release flags                
	        spc     10000b     ;enable ioc port output and pull-low
	        sca     10h        ;enable ioc halt release
	    	tm2x    01111111B  ;64*8/32.768=15.625ms
	    	;tm2x	100111111B ;64*32/32768=62.5ms
                she     0000000B   ;prevent tmr1,2 int 0.5s RFC                call    InitRAM 
                call    ClearLCD
                call    InitRAM
                call    InitIO
                sf	02H	   ;SET BCF=1
                fast
                call    TransDataControlByD0
                call    Display
                slow
                rf	02H	   ;SET BCF=0 
;****************************************                
MainHalt:    
                tm2x    01111111B  ;64*8/32.768=15.625ms
                she     10h 
                lda     HaltPortC           ;Key halt release
		jb1     HaltPortCPro     
		lda     Halt15ms
		jb1  	Halt15msPro           ;62.5 ms halt release
		halt
		nop
		nop
		msb	HaltPortC
		mcx     Halt15ms		
		jmp     MainHalt
;===============================		
ClearLCD:
                lds     70h,00h
                lcp     00h,70h
                lcp     01h,70h
                lcp     02h,70h
                lcp     03h,70h
                lcp     04h,70h
                lcp     05h,70h
                lcp     06h,70h
                rts   		
;================================                
InitIO:                  
	       ;IOA4 IOA3 IOA2 IOA1                        
	       ;  |   |    |    |                                       
	       ;Mute  CE   CK   DA                                      
	        lds        70h,1000b     
	        sta        PortAState                         
	        opa        70h  
	        spa        11111b 
	        ; IOB4 IOB3 IOB2 IOB1                                     
	        ;  |   |    |    |                                       
	        ;  × AM/FM IO1 PowerOut     
	        lds        70h,0111b  ;2005-9-1 16:22
	        sta        PortBState
	        opb        70h
	        spb        11111b 	       
	       ;IOC4 IOC3 IOC2 IOC1                                     
	       ;  |   |     |    |                                       
	       ; Down Up  Power Mode     
	        lds        70h,0000b    
	        opc        70h
	        spc        10000b                                       
               ;===================
	        lds        70h,0000b  
	        opd        70h
	        spd        11111b  
	        ;==Set C5-C9 Output as 0==
	        lds        70h,00h 
	        lcp        1fh,70h
	        rts
         SetCKAsHigh:
                ori*       PortAState,CK_High
                opa        PortAState 
                rts  
         SetCKAsLow:
                andi*      PortAState,CK_Low  
                opa        PortAState         
                rts                
         SetCEAsHigh:       
                ori*       PortAState,CE_High
                opa        PortAState 
                rts      
         SetCEAsLow:       
                andi*      PortAState,CE_Low  
                opa        PortAState         
                rts                 
         SetDAAsHigh:       
                ori*       PortAState,DA_High
                opa        PortAState 
                rts      
         SetDAAsLow:       
                andi*      PortAState,DA_Low  
                opa        PortAState         
                rts  
         SetMuteAsHigh:       
                ori*       PortAState,Mute_High
                opa        PortAState 
                rts      
         SetMuteAsLow:       
                andi*      PortAState,Mute_Low  
                opa        PortAState         
                rts  	
         SetBandSwitchAsHigh:
                ori*       PortBState,BandSwitch_High
                opb        PortBState
                rts
         SetBandSwitchAsLow:    
                andi*      PortBState,BandSwitch_Low
                opb        PortBState
                rts    
         SetIO1AsHigh:
                ori*       PortBState,IO1_High
                opb        PortBState
                rts
         SetIO1AsLow:    
                andi*      PortBState,IO1_Low
                opb        PortBState
                rts  
         SetPowerAsHigh:
                ori*       PortBState,Power_High
                opb        PortBState
                rts  
         SetPowerAsLow:    
                andi*      PortBState,Power_Low
                opb        PortBState
                rts                                   	        			             
;*********************** 15.625MS事件处理 ***************************                                             
Halt15msPro:
                plc        10h             ;Clear timer2 Halt release request flag HRF1
                andi*      Halt15ms,1101b ;clear timer2 Halt release flag
                nop
                nop
                lda        AutoScanFlag
                jnz        GoToAutoSearch
                mrw	   WorkReg,Counter1 	       
	        subi       WorkReg,08h 
	        jc         EighthSecEntry
                inc*       Counter1 
                jmp        MainHalt 
      ;=========== 1/8秒事件处理 ============          
           EighthSecEntry:
                lds        Counter1,00h                  
                lda        CycScanKeyFlag
                jz         EighthSecEntry2
                mrw	   WorkReg+1,Counter2 	       
	        subi       WorkReg+1,04h  ;设置常按时间
	        jc         AutoScanDelWith
                inc*       Counter2 
            EighthSecEntry2:                    ;125ms侦测一次按键 
                ipc        KeyValue       ;read pin of portc 
                jz         NoDetectKey
                sub        KeySave
                jz         DetectKey   
            NoDetectKey:  
                lds        CycScanKeyFlag,00h
                lds        Counter2,00h
                rf2        1         ;关闭reload功能 2005-3-11 18:06
                jmp        MainHalt
            DetectKey:               ;不变,表明是常按键  
                lds        CycScanKeyFlag,01h
                jmp        MainHalt
      ;==================常按键处理===================          
      AutoScanDelWith:
                lds        KeyHoldFlag,01h
                lds        Counter2,00h
                lds        AutoScanFlag,01h 
                sf2        01h  
                jmp        MainHalt 
;==============================     
            KeyAddPressPro1:
                call       KeyAddPress
                jmp        AutoSearchAgain
            KeySubPressPro1:
                call       KeySubPress
                jmp        AutoSearchAgain
;******************* 自动搜台 *******************       
GoToAutoSearch:
                ;rf2        1     ;关闭reload功能 2005-3-11 18:06                
                lda        KeySave
                jb2        KeyAddPressPro1    
                jb3        KeySubPressPro1 
                jmp        MainHalt 
            AutoSearchAgain: 
                lds        AutoScanFlag,00h 
                ;call       Delay62ms ;2005-11-16 13:39 
                call       Delay100ms ;2005-11-16 13:52
                call       TransDataControlByD2 
                lda        AutoScanFlag
                jnz        AutoSearchAgain1
                sf2        1h    ;开启reload功能/enable timer2                 
                lds        AutoScanFlag,01h  ;2005-8-23 13:33
                jmp        MainHalt 

⌨️ 快捷键说明

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