定时器中断产生方波源程序
fangbo.asm利用定时器Timer0XF脚产生周期1s的的方波
            .title    "fangbo.asm"
            .mmregs
            .def    CodeStart            ;程序入口
            .def    TINT0_ISR            ;Timer0中断服务程序
                                       
STACK        .usect    "STACK",10H            ;分配堆栈空间   
;设定定时器0控制寄存器的内容
K_TCR_SOFT    .set    0B<<11                ;TCR教师节手抄报内容大全11soft=0
K_TCR_FREE    .set    0B<<10                ;TCR10free=0
K_TCR_PSC    .set 0B<<6              ;TCR9-6位,可跟TDDR一样,也可不设自动加载
K_TCR_TRB    .set    1B<<5                ;TCR5TRB=1此位置1,PSC会自动加载的
K_TCR_TSS    .set    0B<<4                ;TCR4TSS=0
K_TCR_TDDR    .set    1001B<<0                ;TCR3-0TDDR=1001B
K_TCR        .set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR
K_TCR_STOP    .set 1B<<4                ;TSS=1时计数器停止
           
            .data
DATA_DP:           
XF_Flag:    .word    1                ;当前XF的输出电平标志,如果XF_Flag=1,XF=1
;================================================
;主程序:
;================================================
            .text
CodeStart:
            STM        #STACK+10H,SP        ;设堆栈指针SP
            LD        #DATA_DP,DP            ;设数据地址DP
            STM        #XF_Flag,AR2        ;AR指向XF标志
初级会计职称考试准考证打印
            ;改变中断向量表位置
K_IPTR        .set    0080h                ;指向0080H,默认是FF80
            LDM        PMST,A
            AND        #7FH,A                ;保留低7位,清掉高位
            OR        #K_IPTR,A            ;
            STLM    A,PMST
;初始化定时器0
;f=100Mhz,定时最大是:10ns*2^4*2^16=10ms
;要输出1s的方波,可定时5ms,再在中断程序中加个100计数器
;Tt=10ns*(1+9)*(1+49999)=5ms
;f=50M, Tt=20ns*(1+9)*(1+49999)=10ms
;再加50计数器
CounterSet    .set    49                    ;定义计数次数
PERIOD        .set    49999                ;定义计数周期
            .asg    AR1,Counter            ;AR1做计数指针,重新命名以便识别
            STM        #CounterSet,Counter    ;设计数器初值
            STM        K_TCR_STOP,TCR        ;停止计数器0
;            STM        #PERIOD,TIM            ;扫黑风暴剧情介绍完整版可设成跟PRD一样,也可不设自动加载
            STM        #PERIOD,PRD            ;设定计数周期
            STM        #K_TCR,TCR            ;开始Timer0
            stm    #0008h,IMR            ;允许Timer0中断
            STM        #0008h,IFR            ;清除挂起的中断
            RSBX    INTM                ;开中断
end:            nop
            B        end               
;================================================
;Timer0中断服务程序:TIN0_ISR
;================================================
TINT0_ISR:       
            PSHM    ST0                ;本中断程序影响TC,位于ST0
            BANZ    Next,*Counter-        ;判断不等于0时跳转,然后计数器减1
            STM        #CounterSet,Counter    ;恢复初值
                                            ;判断当前XF状态并作电平变化
            BITF    *AR2,#1                ;IF XF_Flag=1 then TC=1  else TC=0
            BC        ResetXF,TC            ;IF    TC=1 then XF=0 else XF=1
setXF:       
            SSBX    XF                    ;XF为高电平
            ST        #1,*AR2                ;相应修改标志
            B        Next
ResetXF:
            RSBX    XF                    ;;XF为高电平
            ST        #0,*AR2                ;相应修改标志
Next:
            POPM        ST0
            RETE       
            .end   
d
-e CodeStart            /* This is the entry point reset vector */
-m map.map
当春乃发生的乃是什么意思-o fangbo.out
MEMORY    {
    PAGE 0:
        VECT:  org=080h len=80h   
        PARAM: org=100h len=0F00h
    PAGE 1:
        DARAM: org=1000h len=1000h
}
SECTIONS    {
    .text        :> PARAM PAGE 0
    .vectors      :>VECT PAGE 0
    STACK        :> DARAM    PAGE1
新年搞笑祝福
    .data        :> DARAM PAGE 1
    }
   
vectors.asm。省略部分基本上同实验三。
              .sect ".vectors"        ;人教版二年级下册语文教学计划开始命名段.vecotrs
            .global CodeStart        ;引用程序入口的全局符号定义
            .global TINT0_ISR
TINT:      B TINT0_ISR    ;Timer0中断
                NOP
                NOP
BRINT0:      RETE            ;McBSP #0 receive interrupt

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。