📄 a2_initial_main.asm
字号:
;*********************************************************************
;*********************************************************************
;=======================端口初试化及程序主循环========================
;>>项目名 : >>
;>>项目号 : >>
;>>备注 : 要搬用该程序文件,须注意3个部分: >>
; 1.变量定义部分 >>
; 2.一般的定时器,用于系统分时运行 >>
; 3.端口初试化及程序主循环 >>
;>>客户 : >>
;>>修改日期 : 2008/01/26 >>
;>>程序员 : Wangbo >>
;>>芯片型号 : W588D120 >>
;>>IO端口配置: >>
; BP10[]-----> >>
; BP11[]-----> >>
; BP12[]-----> >>
; BP13[]-----> >>
; BP14[]-----> >>
; BP15[]-----> >>
; BP16[]-----> >>
; BP17[]-----> >>
; BP00[]-----> >>
;>>程序实现功能简述: >>
; >>
;===========================端口初试化================================
SMAIN_START_INIT:
LDA #FFH
STA !BP0D
STA !BP0M ;设置按键口
;---------------------------------------------------------------------
LDA #00H
STA !BP2D
LDA #FFH ;设置LED口
STA !BP2M
STA !BP2
;---------------------------------------------------------------------
LDA !IEF0
ORA #40H
STA !IEF0 ;开TmierG1中断
LDA #3CH
STA !TMG1V ;设置1MS的TimerG1中断
LDA #09H
STA !TMG1C ;TimerG1的时钟为Fsys/4,并激活TimerG1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>程序主循环>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MAIN_Start_Loop:
S_Time10ms:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_10MS
BEQ S_Time100ms
LDA #01H
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 #02H
TRB FSYS_Time_Flag
;---------------------100ms程序段区
JSR MKEY_Manager
S_Time500ms:
LDA FSYS_Time_Flag
BIT #MACRO_SYS_500MS
BEQ SMAIN_END
LDA #04H
TRB FSYS_Time_Flag
;---------------------500ms程序段区
; JSR MLED_FLASH ;LED_FLASH
JSR MSYS_SLEEP
SMAIN_END:
JMP MAIN_Start_Loop
;=====================================================================
;系统睡眠
MSYS_SLEEP:
LDA !BP0
AND #FFH
CMP #FFH ;检测是否有按键按下
BCC SSYS_SLEEP_RTS
;-------------------
LDA <CH1_STATUS
BIT #SP_BZ ;检测是否在播放声音
BNE SSYS_SLEEP_RTS
;---------------------开始计时睡觉
INC gSTOP_Counter
LDA gSTOP_Counter
CMP #20
BCC SSYS_SLEEP_RTS
;-------------------
LDA !SPEN
STA gSTOP_Counter
LDA #0 ;关DAC
STA !SPEN
;-------------------
LDA #01H
STA !STOP ;开始睡眠
NOP
NOP
LDA #0FH
STA BP1D
;-------------------
LDA gSTOP_Counter
STA !SPEN ;开DAC
STZ gSTOP_Counter
SSYS_SLEEP_RTS:
RTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -