?? main.asm
字號(hào):
;==========================================================
;
; 模塊: FM發(fā)射模塊控制代碼
;
; 版本: 1.01
;
; 日期: 2007-7-28
;
; 作者: 施探宇
;
; 說明: Zi2020 應(yīng)用圖
;
; +-----+
; (106.7)P5.0 ===| |=== P5.1(PREV KEY)(POWER KEY)
; (107.1)P6.7 ===| |=== P5.2(NEXT KEY)
; (107.5)P6.6 ===| |=== P5.3(CE,Zi2020 高打開)
; Vdd ===| |=== Vss
; (107.9)P6.5 ===| |=== P6.0(音頻檢測(cè))
; FM LED)P6.4 ===| |=== P6.1(SDA,Zi2020)
; (NC)P6.3 ===| |=== P6.2(SCL,Zi2020)
; +-----+
;
;==========================================================
include "reg.inc"
;===========================================================
; Start()
;===========================================================
ORG 0x00
jmp Start
ORG 0x01
reti
ORG 0x08
bc INT_STATU,@P6_FLAG_BIT
bc INT_STATU,@EX_FLAG_BIT
reti
;===============================================
; Function:TblFmModeHi(A)
TblFmDefault_bal:
ADD PC, A
RETL @FM_Default_02H
RETL @FM_Default_02L
RETL @FM_Default_03H
RETL @FM_Default_03L
RETL @FM_Default_04H
RETL @FM_Default_04L
RETL @FM_Default_05H
RETL @FM_Default_05L
RETL @FM_Default_06H
RETL @FM_Default_06L
RETL @FM_Default_07H
RETL @FM_Default_07L
RETL @FM_Default_08H
RETL @FM_Default_08L
RETL @FM_Default_09H
RETL @FM_Default_09L
RETL @FM_Default_10H
RETL @FM_Default_10L
RETL @FM_Default_11H
RETL @FM_Default_11L
RETL @FM_Default_12H
RETL @FM_Default_12L
RETL @FM_Default_13H
RETL @FM_Default_13L
RETL @FM_Default_14H
RETL @FM_Default_14L
RETL @FM_Default_15H
RETL @FM_Default_15L
RETL @FM_Default_16H
RETL @FM_Default_16L
RETL @FM_Default_17H
RETL @FM_Default_17L
RETL @FM_Default_18H
RETL @FM_Default_18L
RETL @FM_Default_19H
RETL @FM_Default_19L
RETL @FM_Default_20H
RETL @FM_Default_20L
RETL @FM_Default_21H
RETL @FM_Default_21L
RETL @FM_Default_22H
RETL @FM_Default_22L
RETL @FM_Default_23H
RETL @FM_Default_23L
RETL @FM_Default_24H
RETL @FM_Default_24L
RETL @FM_Default_25H
RETL @FM_Default_25L
RETL @FM_Default_26H
RETL @FM_Default_26L
RETL @FM_Default_27H
RETL @FM_Default_27L
RETL @FM_Default_28H
RETL @FM_Default_28L
RETL @FM_Default_29H
RETL @FM_Default_29L
RETL @FM_Default_30H
RETL @FM_Default_30L
RETL @FM_Default_31H
RETL @FM_Default_31L
RETL @FM_Default_32H
RETL @FM_Default_32L
RETL @FM_Default_33H
RETL @FM_Default_33L
RETL @FM_Default_34H
RETL @FM_Default_34L
RETL @FM_Default_35H
RETL @FM_Default_35L
RETL @FM_Default_36H
RETL @FM_Default_36L
RETL @FM_Default_37H
RETL @FM_Default_37L
RETL @FM_Default_38H
RETL @FM_Default_38L
RETL @FM_Default_39H
RETL @FM_Default_39L
RETL @FM_Default_40H
RETL @FM_Default_40L
RETL @FM_Default_41H
RETL @FM_Default_41L
RETL @FM_Default_42H
RETL @FM_Default_42L
RETL @FM_Default_43H
RETL @FM_Default_43L
RETL @FM_Default_44H
RETL @FM_Default_44L
;------------------------------
; 程序開始
;------------------------------
ORG 0x100
Start:
DISI ;禁止中斷
call Init_Con_reg ;初始化控制寄存器
call CleanRam ;清除寄存器
call Init_Ioport ;初始化輸入輸出口
;ENI ;開中斷
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;初始化5800
call delay_500ms
call I2cStop
call delay_50ms
mov a,@0xd8
mov Rd5800_Reg_02H,a
mov a,@0x81
mov Rd5800_Reg_02L,a
call I2cStart
; Device Id : (A = I2cDevId)
mov A,@0x20
call I2cSendByte
call I2cGetAck
jbs A_buff,ACK
jmp FmTuneDonem
mov a,Rd5800_Reg_02H
call I2cSendByte
call I2cGetAck
jbs A_buff,ACK
jmp FmTuneDonem
mov a,Rd5800_Reg_02L
call I2cSendByte
call I2cGetAck
jbs A_buff,ACK
jmp FmTuneDonem
FmTuneDonem:
call I2cStop
mov A,A_buff
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
call delay_500ms
call delay_50ms
call R5800_Init_I2c
call delay_500ms
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
mov a,@0xd0
mov Rd5800_Reg_02H,a
mov a,@0x02
mov Rd5800_Channel,a ;設(shè)置初初始頻率為87.7---87.5 step 100k
mov a,@0x00
mov Rd5800_Reg_03L,a
call delay_50ms
call FmTune
nop
;===========================================================
; main()
;===========================================================
main:
;判斷FM信號(hào)強(qiáng)度
;jmp Judgment_Rssi ;判斷信號(hào)的強(qiáng)度大小,而決定是否靜音
Judgment_Rssi_end:
jmp Judgment_Sleep ;判斷是否需要進(jìn)入睡眠
Judgment_Sleep_End:
jmp main
;===========================================================
; main end
;===========================================================
Judgment_Rssi:
;等待一秒判斷信號(hào)強(qiáng)度
call delay_500ms
call delay_500ms
call I2cRead
mov a,RSSI
and a,@0x3f
sub a,@Rssi_MidPoint ;如果信號(hào) 強(qiáng)度小于0x10就靜音
jbs FLAG,@C
jmp fm_unmute
fm_mute_:
jbc FM_STATUS,@FM_MUTE
jmp Judgment_Rssi_muting
bs FM_STATUS,@FM_MUTE ;置收音狀態(tài)為靜音
bc Rd5800_Reg_02H,@DMUTE ;靜音
call FmTune
call delay_50ms
jmp Judgment_Rssi_ret
fm_unmute:
jbs FM_STATUS,@FM_MUTE
jmp Judgment_Rssi_ret
bc FM_STATUS,@FM_MUTE ;置收音狀態(tài)為開起音量
bs Rd5800_Reg_02H,@DMUTE ;開音量
call FmTune
call delay_50ms
jmp Judgment_Rssi_ret
Judgment_Rssi_muting:
call FmTune
call delay_50ms
call I2cRead
mov a,RSSI
and a,@0x3f
sub a,@Rssi_MidPoint ;rssi 強(qiáng)度
jbs FLAG,@C
jmp fm_unmute
jmp Judgment_Rssi_ret
Judgment_Rssi_ret:
jmp Judgment_Rssi_end
;-------------------------------------------------------------------------
Judgment_Sleep:
jbc P6,@0 ;著斷是否需要進(jìn)入睡眠
jmp Judgment_Sleep_End
call delay_50ms ;目的是防止收到假信號(hào)
jbc P6,@0 ;著斷是否需要進(jìn)入睡眠
jmp Judgment_Sleep_End
call delay_50ms ;目的是防止收到假信號(hào)
jbc P6,@0 ;著斷是否需要進(jìn)入睡眠
jmp Judgment_Sleep_End
bc Rd5800_Reg_02L,@POWERUP_ENABLE ;關(guān)收音電源
call FmTune
mov a,@0001110B
contw
wdtc
ior WTDCON ;禁止持門狗
mov A_buff,a
bc A_buff,@0x07
mov a,A_buff
iow WTDCON
mov P6,P6
DISI
slep
bc INT_STATU,@P6_FLAG_BIT
bc INT_STATU,@EX_FLAG_BIT
mov a,@0001110B
contw
wdtc
call delay_50ms
bc FM_STATUS,@FM_MUTE ;置收音狀態(tài)為開起音量
bs Rd5800_Reg_02L,@POWERUP_ENABLE ;開啟收音電源
bc Rd5800_Reg_02H,@DMUTE ;靜音
call FmTune
call delay_50ms
call delay_500ms
bs Rd5800_Reg_02H,@DMUTE ;開音量
call FmTune
jmp Judgment_Sleep_End
;===============================================
; Includes Other Functions.
;===============================================
include "init_sys.asm"
include "time.asm"
include "i2cproc.asm"
include "5800.asm"
END
;===============================================
; End of file.
;===============================================
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -