📄 prgframe.asm
字号:
*-----------------------------------------------—----------------*
*文件名:PrgFrame.ASM *
*硬件连接:PTA.1接指示灯(低电平点亮,高电平暗) *
*程序描述:指示灯PTA.1闪烁 *
*目的:第一个Motorola MCU程序框架 *
*说明:提供Motorola MCU的编程框架,供教学入门使用 *
*注意:如果延时不够长的话,会发觉灯不会闪烁,而是一直亮,这是由于 *
* 人的视觉的引起的。 *
*-------------------------------------------------—--------------*
*映像寄存器地址定义————————————————————--------
DDRA equ $0004 ;A口数据方向寄存器
PTA equ $0000 ;A口数据寄存器
*
RAMstartAddr equ $0040 ;RAM的起始地址(因芯片不同可以更改)
FlashStartAddr equ $8000 ;程序开始地址(因芯片不同可以更改)
*数据区定义(变量名定义)————————————------------———
org RAMstartAddr ;RAM的起始地址
;(若使用内存变量,可在此定义,本框架程序未使用内存变量)
*==================================================================
*主程序——————————————————————————————
org FlashStartAddr ;程序起始地址
MainInit: ;复位后程序从此开始执行
;系统初始化
SEI ;禁止所有中断
LDHX #$023F ;堆栈初始化,放入GP32的RAM最高端
TXS ;将#$023F放入堆栈寄存器SP
JSR Init0 ;调系统初始化子程序Init0,初始学习时跳过此处
;I/O初始化
BSET 1,DDRA ;设置PTA.1为输出
BSET 1,PTA ;初始时,PTA.1指示灯"暗"
MainLoop: ;程序总循环入口
BCLR 1,PTA ;PTA.1指示灯“亮”
LDA #$5 ;#$5为延时子程序DelaySub的时间长度参数;若要改变闪烁的快慢,可以修改此参数
JSR DelaySub ;调用延时子程序
BSET 1,PTA ;初始时,PTA.1指示灯"暗"
LDA #$5 ;延时子程序DelaySub的时间长度参数
JSR DelaySub ;调用延时子程序
;-------------------------------------------------------
JMP MainLoop ;转总循环入口处
*------以下为子程序存放处—---------------------------------------
*----程序延时子程序(DelaySub)---------------------------------*
*功能:程序方法延时,延时长短由入口A中的数值决定 *
*入口:A=延时长度 *
*注:最小延时0.1秒,最大延时A=$FF ,255*0.1=25.5秒 *
*占用CPU内寄存器:HX,A *
*-------------------------------------------------------------*
DelaySub: ;延时0.1秒
PSHH ;保据寄存器HX
PSHX
DelaySub1:
LDHX #$FFFF
DelaySub2:
PSHA ;保护寄存器A
LDA #$FF
DelaySub3:
DBNZA DelaySub3
PULA
DBNZX DelaySub2
DBNZA DelaySub1
PULX
PULH
RTS
*----系统初始化子程序(Init0)----------------------------------*
*功能:系统初始化 *
*入口:无 *
*出口: *
*占用CPU内寄存器:A *
*-------------------------------------------------------------*
Init0: ;系统初始化Init0子程序
LDA #%00000001 ;初始化CONFIG2
STA $001E
LDA #%00111101 ;初始化CONFIG1
STA $001F
CLR $0036 ;初始化PTCL
MOV #$01,$0036
MOV #$01,$0038
MOV #$2C,$0039
MOV #$80,$003A
BSET 5,$0036
BSET 7,$0037
BSET 4,$0036
RTS
*以下为中断矢量-—----------------------------------------------
ORG $FFFE ;复位矢量
DW MainInit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -