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

📄 chap6.asm

📁 摩托罗拉Mc6805利程
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; MC68HC05C8OCHan  lda TIME+1              [3]                                                   inca                    [3]                                                    sta TIME+1              [4]       lda TIME                [3]       adc #0                  [2]       sta TIME                [4]                                               lda TSR    ;part of Ack                          lda OCR+1  ;low byte         add #$D0   ;$07D0=2000       sta OCR+1              lda OCR                 adc #$07               sta OCR    ;next in 1ms        rti       org  $1FF8       fdb  OCHan;  Program 6.22. Ritual for the assembly language implementation of the squarewave using output compare.; MC68HC05C8Period rmb  2    ;units 祍ecInit sei         ;make atomic     lda #$40     sta TCR     ;arm OCF     lda TSR     ;clear OCF     ldx TCNT    ;latches LSB too     lda TCNT+1  ;read low byte     add #50     ;first in 25祍     sta OCR+1     txa     adc #0     sta OCR     cli         ;enable     rts;  Program 6.23. Assembly language squarewave using output compare.; MC68HC05C8OCHan lda TSR ;part of ACK    [3]                      lda OCR+1  ;low byte     [3]     add Period+1             [3]     sta OCR+1 ;OCR=OCR+Period [4]     lda OCR                  [3]     adc Period               [3]     sta OCR    ;setup next   [4]     lda TCR                  [3]                              eor #1     ;toggle OLVL  [2]                                                sta TCR                  [4]     rti                      [6]     org  $1FF8     fdb  OCHan;  Program 6.25. Assembly language initialization pulse-width modulated squarewave using output compare.; MC68HC05C8High rmb  2 ;number of cycles highLow  rmb  2 ;number of cycles lowInit sei         ;make atomic     lda #$41     sta TCR     ;arm OCF     lda TSR     ;clear OCF     ldx TCNT    ;latches LSB too     lda TCNT+1  ;read low byte     add #50     ;first in 25祍     sta OCR+1     txa     adc #0     sta OCR     cli         ;enable     rts;  Program 6.26. Assembly language ISR for pulse-width modulated squarewave using output compare.; MC68HC05C8OCHan lda TSR ;part of ACK    [3]                      brclr 0,TCR,zero         [5]                         one  lda OCR+1  ;low byte     [3]     add High+1               [3]     sta OCR+1 ;OCR=OCR+High  [4]     lda OCR                  [3]     adc High                 [3]     sta OCR    ;setup next   [4]     lda #$40   ;next is 0    [2]                                                sta TCR                  [4]     bra done                 [3]zero lda OCR+1  ;low byte     [3]     add Low+1                [3]     sta OCR+1 ;OCR=OCR+Low   [4]     lda OCR                  [3]     adc Low                  [3]     sta OCR    ;setup next   [4]     lda #$41   ;next is 1    [2]                                                sta TCR                  [4]done rti                      [6]     org  $1FF8     fdb  OCHan; Program 6.29. Assembly language frequency measurement.; MC68HC05C8Count rmb 1 ;in progressFreq rmb 1  ;in 100Hz unitsDone rmb 1  ;$FF when readyInit sei         ;make atomic     lda #$C0    ;arm ICF rising     sta TCR     ;arm OCF     lda TSR     ;clear ICF     lda ISR+1   ;read low byte     clr Done     clr Count     ldx TCNT    ;latches LSB too     lda TCNT+1  ;read low byte     add #50     ;first in 25祍     sta OCR+1     txa     adc #0     sta OCR     cli         ;enable     rtsIHan lda TSR      bit #$40   ;poll OCF     bne ChIC                 OChan lda OCR+1       add #$20     sta OCR+1 ;OCR=OCR+20000     lda OCR      adc #$4E     sta OCR       lda Count                                 sta Freq      lda #$FF      sta Done                                              clr Count  ;setup for nextChIC  lda TSR ;poll ICF     bit #$80     bne Iret                   ICHan lda ICR+1 ;ack     inc Count                                        Iret rti        org  $1FF8     fdb  Ihan  ;both ICF and OCF;  Program 6.31. Assembly language initialization for period measurement.; MC68HC05C8Init sei         ;make atomic     lda #$C0    ;arm ICF rising     sta TCR     ;arm OCF     lda TSR     ;clear ICF     lda ISR+1   ;read low byte     clr Done    ;set when ready     clr Cnt     clr Cnt+1     clr OverFlow ;set if too bigwait brclr 7,TSR,wait ;wait                              lda ISR+1   ;read low byte     ldx TCNT    ;latches LSB too     lda TCNT+1  ;read low byte     add #50     ;first in 25祍     sta OCR+1     txa     adc #0     sta OCR     cli         ;enable     rts;  Program 6.32. Assembly language interrupt service routines for period measurement.; MC68HC05C8IHan lda TSR      bit #$40   ;poll OCF     bne ChIC                 OChan lda OCR+1       add #$D0     sta OCR+1 ;OCR=OCR+2000     lda OCR      adc #$07     sta OCR       lda Cnt+1                                                 add #1                                                  sta Cnt+1     lda Cnt     adc #0     sta Cnt     bne ChIC     lda Cnt+1     bne ChIC ;Is Cnt equal to 0     lda #$FF     sta OverFlow ;too bigChIC  lda TSR ;poll ICF     bit #$80     bne Iret                   ICHan lda ICR+1 ;ack     lda OverFlow     beq goodbad  sta Period     sta Period+1 ;Period=65535     clr OverFlow     bra set good lda Cnt+1                                 sta Freq+1                                                lda Cnt     sta Freq set  lda #$FF      sta Done                                              clr Cnt     clr Cnt+1Iret rti        org  $1FF8     fdb  Ihan  ;both ICF and OCF;  Program 6.34. Assembly language initialization for frequency measurement.; MC68HC05C8Init sei         ;make atomic     lda #$C0    ;arm ICF rising     sta TCR     ;arm OCF     lda TSR     ;clear ICF     lda ISR+1   ;read low byte     clr Done     clr Count     clr Count+1     clr FourHundred     clr FourHundred+1     ldx TCNT    ;latches LSB too     lda TCNT+1  ;read low byte     add #50     ;first in 25祍     sta OCR+1     txa     adc #0     sta OCR     cli         ;enable     rts   ;  Program 6.35. Assembly language ISR's for frequency measurement.; MC68HC05C8IHan lda TSR      bit #$40   ;poll OCF     bne ChIC                 OChan lda OCR+1       add #$50     sta OCR+1 ;OCR=OCR+50000     lda OCR      adc #$C3     sta OCR       lda FourHundred+1     add #1     sta FourHundred+1     lda FourHundred     adc #0     sta FourHundred     lda FourHundred+1 ;400=$190     cmp #$90     bne ChIC     lda FourHundred     cmp #1     bne ChIC     lda Count+1   ;every 10sec                          sta Freq+1                                                lda Count                                 sta Freq      lda #$FF      sta Done                                              clr Count  ;setup for next     clr Count+1     clr FourHundred     clr FourHundred+1ChIC lda TSR ;poll ICF     bit #$80     bne Iret                   ICHan lda ICR+1 ;ack     lda Count+1                                                 add #1                                                  sta Count+1     lda Count     adc #0     sta Count                                        Iret rti        org  $1FF8     fdb  Ihan  ;both ICF and OCF

⌨️ 快捷键说明

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