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

📄 prgframe.asm

📁 motorola 单片机 了解程序基本框架
💻 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 + -