📄 a10_initial_main.asm
字号:
;*****************************************************************************************
;*****************************************************************************************
;==========================端口初试化及程序主循环=========================================
;>>项目名 : Phonics Board - ISD17240 Part Program >>
;>>项目号 : M08263 >>
;>>备注 : 要搬用该程序文件,须注意3个部分: >>
; 1.变量定义部分 >>
; 2.一般的定时器,用于系统分时运行 >>
; 3.端口初试化及程序主循环 >>
;>>客户 : >>
;>>修改日期 : 2008/08/21 >>
;>>程序员 : Wangbo >>
;>>芯片型号 : W567B030 >>
;>>IO端口配置: >>
; BP00[O]----->LED1 >>
; BP01[O]----->LED2 >>
; BP02[O]----->LED3 >>
; BP03[O]----->LED4 >>
; BP04[O]----->LED5 >>
; BP05[O]----->LED6 >>
; BP10[O]----->ISD_Reset >>
; BP11[O]----->ISD_MOSI >>
; BP12[O]----->ISD_SCK >>
; BP13[O]----->ISD_SS >>
; IP00[I]----->K7_Record >>
; IP01[I]----->ISD_MISO >>
; IP02[I]----->K2_ISD_PLAY >>
; IP03[I]----->K3_ISD_REG_INC >>
; IP04[I]----->K4_ISD_REG_DEC >>
;>>程序实现功能简述: >>
; ISD分为44个录音段,每一段5S,实现每一段的选择,录音,播放功能 >>
; >>
;===========================端口初试化====================================================
SProgram_Start:
LDA #0FH
TRB !BP0D
LDA #0FH ;LED
TSB !BP0M
LDA #03H
TRB !BP1D
LDA #0FH ;ISD_CON
TSB !BP1M
LDA #08H
TRB !BP2D
LDA #0FH ;KEY_CON
TSB !BP2M
LDA #80H ;打开KEY
TRB !BP2
LDA #FFH ;关闭LED
STA !BP0
LDA #0FH
TSB !IP0EN
MACRO_ISD17240_ON
;---------------------------------------------------------------------
LDA #02H
TSB !IEF1 ;开FXF15中断
;---------------------------
JSR MISD17XX_Initial ;ISD初始化
LDA #01
STA gChoose_SEG
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>程序主循环>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MAIN_Start_Loop:
S_Time10ms:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_10MS
BEQ S_Time100ms
LDA #MACRO_SYS_10MS
TRB FSYS_Time_Flag
;-------------------------------------------------------------------------10ms程序段区
LDA #01H
STA !WDTC
JSR MKEY_SCAN
S_Time100ms:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_100MS
BEQ S_Time500ms
LDA #MACRO_SYS_100MS
TRB FSYS_Time_Flag
;------------------------------------------------------------------------100ms程序段区
JSR MKEY1_Record_ISD
JSR MKEY2_PLAY_ISD
JSR MKEY3_Choose_SEG
JSR MKEY4_Choose_SEG
S_Time500ms:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_500MS
BEQ SMAIN_END
LDA #MACRO_SYS_500MS
TRB FSYS_Time_Flag
;------------------------------------------------------------------------500ms程序段区
JSR MSYS_SLEEP ;睡眠
SMAIN_END:
JMP MAIN_Start_Loop
;========================================================================================
;系统睡眠
MSYS_SLEEP:
;-------------------------------------------
LDA !Mac_KEY_Port
AND #Mac_KEY_NUM
CMP #Mac_KEY_NUM ;检测是否有按键按下
BEQ SSYS_SLEEP_RUN
RTS
SSYS_SLEEP_RUN:
MACRO_ISD17XX_COMM_RD_STATUS
LDA gISD_Receive_DATA+2
BIT #04H ;检测ISD是否在播放声音
BNE SSYS_SLEEP_RTS
INC gSTOP_Counter
LDA gSTOP_Counter
CMP #6 ;3秒后睡眠
BCC SSYS_SLEEP_RTS
MACRO_ISD17XX_COMM_PD ;ISD掉电模式
;-----------------------------------------
JSR MSPI_SS_H
JSR MSPI_SCLK_H ;ISD控制口
JSR MSPI_MOSI_H
JSR MSPI_DELAY_100US
JSR MSPI_DELAY_100US
JSR MSPI_DELAY_100US
JSR MSPI_DELAY_100US
;-----------------------------------------
LDA !S0EN
STA gSTOP_Counter
LDA #0 ;关DAC
STA !S0EN
;-----------------------------------------
LDA #FFH
TSB !BP0 ;关LED
;-----------------------------------------
JSR MSPI_DELAY_100US
LDA #01H
STA !STOP ;开始睡眠
NOP
NOP
NOP
NOP
JSR MSPI_DELAY_100US
;-----------------------------------------
LDA gSTOP_Counter
STA !S0EN
STZ gSTOP_Counter
MACRO_ISD17XX_COMM_PU
SSYS_SLEEP_RTS:
RTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -