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

📄 chap6.asm

📁 Motorola 6808嵌入式接口设计开发原程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
TIME rmb  2      ;every 1 msInit sei         ;make atomic     mov #$02,TSC   ;500ns clk     lda TSC3     mov #$54,TSC3  ;arm,toggle OC; write 0 to bit 7, clears CH3F     ldx TCNT     lda TCNT+1 ;low byte      add #$D0   ;2000=$07D0     sta TCH3+1 ;TCH3=TCNT+2000     txa       adc #$07     sta TCH3  ;setup next      clr  TIME     clr  TIME+1     cli         ;enable     rts;  Program 6.20. Assembly language ISR for periodic interrupt using output compare.; MC68HC708XL36CH3Han pshh                       [2]       ldhx TIME                  [4]                                            aix  #1                    [2]       sthx TIME                  [4]       bclr 7,TSC3  ;Acknowledge                                 lda TCH3+1 ;low byte        add #$D0   ;2000=$07D0       sta TCH3+1 ;TCH3=TCH3+2000       lda TCH3         adc #$07       sta TCH3  ;setup next        pulh                                                     rti       org  $FFEE  ;timer channel 3       fdb  CH3Han;  Program 6.22. Ritual for the assembly language implementation of the squarewave using output compare.; MC68HC708XL36Period rmb  2    ;units 祍ecInit sei         ;make atomic     bset 7,DDRE ;PTE7 output     mov #$02,TSC   ;500ns clk     lda TSC3     mov #$54,TSC3  ;arm,toggle OC; write 0 to bit 7, clears CH3F     ldhx TCNT                                          aix  #50    ;first in 25祍     sthx TCH3     cli         ;enable     rts;  Program 6.23. Assembly language squarewave using output compare.; MC68HC708XL36CH3Han bclr 7,TSC3  ;Ack          [4]                                lda TCH3+1  ;low byte      [3]       add Period+1               [3]       sta TCH3+1 ;TCH3=TCH3+Period[3]       lda TCH3                   [3]       adc Period                 [3]       sta TCH3  ;setup next      [3]       rti                        [7]       org  $FFEE  ;timer channel 3       fdb  CH3Han;  Program 6.25. Assembly language initialization pulse-width modulated squarewave using output compare.; MC68HC708XL36High rmb  2  ;number of cycles highLow  rmb  2  ;number of cycles lowInit sei         ;make atomic     bset 7,DDRE ;PTE7 output     mov #$02,TSC   ;500ns clk     lda TSC3     mov #$5C,TSC3  ;arm,set OC; write 0 to bit 7, clears CH3F     ldhx TCNT                                          aix  #50    ;first in 25祍     sthx TCH3     cli         ;enable     rts;  Program 6.26. Assembly language ISR for pulse-width modulated squarewave using output compare.; MC68HC708XL36CH3Han bclr 7,TSC3  ;Ack          [4]       brclr 2,TSC3,zero          [3]                         one    lda TCH3+1  ;low byte      [3]       add High+1                 [3]       sta TCH3+1 ;TCH3=TCH3+High [3]       lda TCH3                   [3]       adc High                   [3]       sta TCH3  ;setup next      [3]       bclr 2,TSC2                [4]       bra done                   [3]zero   lda TCH3+1  ;low byte      [3]       add Low+1                  [3]       sta TCH3+1 ;TCH3=TCH3+Low  [3]       lda TCH3                   [3]       adc Low                    [3]       sta TCH3  ;setup next      [3]       bset 2,TSC2                [4]done   rti                        [7]       org  $FFEE  ;timer channel 3       fdb  CH3Han; Program 6.29. Assembly language frequency measurement.; MC68HC708XL36Count rmb 1  ;measurement in progressFreq rmb 1   ;in 100Hz unitsDone rmb 1   ;set to $FF when readyInit sei         ;make atomic     mov #$02,TSC   ;500ns clk     lda TSC1     mov #$44,TSC1  ;arm,rising     clr Done     clr Count     lda TSC3     mov #$54,TSC3  ;arm,toggle OC     ldhx TCNT                                          aix  #50    ;first in 25祍     sthx TCH3     cli         ;enable     rtsOC3Han bclr 7,TSC3 ;called every 10ms                                 lda TCH3+1 ;low byte        add #$20   ;20000=$4E20       sta TCH3+1 ;TCH3=TCH3+20000       lda TCH3         adc #$4E       sta TCH3  ;setup next       lda Count       sta Freq        mov #$FF,Done          clr Count  ;setup for next       rti IC1Han bclr 7,TSC1  ;Ack                                inc Count                                            rti                    org  $FFF2  ;timer channel 1       fdb  IC1Han       org  $FFEE  ;timer channel 3       fdb  OC3Han;  Program 6.31. Assembly language initialization for period measurement.; MC68HC708XL36Init sei         ;make atomic     mov #$02,TSC   ;500ns clk     lda TSC1     mov #$44,TSC1  ;arm,rising     clr Done     ldhx #0     sthx Cnt    ;number of msec     clr OverFlow ;set if too bigwait brclr 7,TSC1,wait ;wait for first                              bclr 7,TSC1  ;clear flag     lda TSC3     mov #$54,TSC3  ;arm,toggle OC     ldhx TCNT                                          aix  #50    ;first in 25祍     sthx TCH3     cli         ;enable     rts;  Program 6.32. Assembly language interrupt service routines for period measurement.; MC68HC708XL36OC3Han pshh       ;called every 10ms       bclr 7,TSC3  ;Ack                                 lda TCH3+1 ;low byte        add #$D0   ;2000=$07D0       sta TCH3+1 ;TCH3=TCH3+2000       lda TCH3         adc #$07       sta TCH3  ;setup next       ldhx Cnt                                            aix  #1        sthx Cnt       cphx #0       bne  ok       mov #$FF,OverFlow ;too bigok     pulh                                                     rti IC1Han pshh       ;called every rising       bclr 7,TSC1  ;Ack       lda OverFlow       beq goodbad    sta Period       sta Period+1 ;Period=65535       clr OverFlow       bra set good   ldhx Cnt       sthx Period  ;units in msecset    mov #$FF,Done          clr Cnt       clr Cnt+1       pulh                                                     rti                    org  $FFF2  ;timer channel 1       fdb  IC1Han       org  $FFEE  ;timer channel 3       fdb  OC3Han;  Program 6.34. Assembly language initialization for frequency measurement.; MC68HC708XL36Init sei         ;make atomic     mov #$02,TSC   ;500ns clk     lda TSC1     mov #$44,TSC1  ;arm,rising     clr Done     ldhx #0     sthx Count     sthx FourHundred     lda TSC3     mov #$54,TSC3  ;arm,toggle OC     ldhx TCNT                                          aix  #50    ;first in 25祍     sthx TCH3     cli         ;enable     rts   ;  Program 6.35. Assembly language ISR's for frequency measurement.; MC68HC708XL36OC3Han pshh       ;called every 25ms       bclr 7,TSC3  ;Ack                                 lda TCH3+1 ;low byte        add #$50   ;50000=$C350       sta TCH3+1 ;TCH3=TCH3+50000       lda TCH3         adc #$C3       sta TCH3  ;setup next       lda FourHundred+1       add #1       sta FourHundred+1       lda FourHundred       adc #0       sta FourHundred       lda FourHundred+1 ;400=$190       cmp #$90       bne skip       lda FourHundred       cmp #1       bne skip       ldhx Count  ;every 10sec       sthx Freq        mov #$FF,Done       ldhx #0       sthx Count   ;setup for next       sthx FourHundredskip   pulh                                                     rti IC1Han pshh       ;called every rising       bclr 7,TSC1  ;Ack                                ldhx Count                                            aix  #1        sthx Count        pulh                                                     rti                    org  $FFF2  ;timer channel 1       fdb  IC1Han       org  $FFEE  ;timer channel 3       fdb  OC3Han

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -