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

📄 a2_initial_main.asm

📁 基于6502的WINBOND语音单片机的程序 W588D系列
💻 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 + -