?? chap6.asm
字號:
; Chapter 6 6811 assembly language programs; Jonathan W. Valvano; This software accompanies the book,; Real Time Embedded Systems published by Brooks Cole;; Program 6.1. Initialization of a periodic interrupt using input capture and an external clock.; MC68HC11A8;external signal to PA0/IC3TIME rmb 2 ;every 1 msInit sei ;make atomic ldaa TCTL2 ;Old value anda #$FC ;Clear EDG3B=0 oraa #$01 ;EDG3BA =01 staa TCTL2 ;on rise of PA0 ldaa TMSK1 ;Old value oraa #$01 ;IC3I=1 staa TMSK1 ;Arm IC3F ldd #0 std TIME ;init global ldaa #$01 ;clear IC3F staa TFLG1 cli ;enable rts; Program 6.2. Periodic interrupt using input capture and an external clock.; MC68HC11A8IC3Han ldaa TFLG1 ;is XXXXXXX1 [4] anda #$01 [2] bne ClkHan [3] swiClkHan ldaa #$01 ;clear IC3F [2] staa TFLG1 ;Acknowledge [4] ldx TIME [5] inx [3] stx TIME [5] rti org $FFEA fdb IC3Han; Program 6.4. Initialization for period measurement.; MC68HC11A8;external signal to PA2/IC1Period rmb 2 ;units 500 nsFirst rmb 2 ;TCNT at first edgeDone rmb 1 ;set each risingInit sei ;make atomic ldaa TCTL2 ;Old value anda #$CF ;Clear EDG1B=0 oraa #$10 ;EDG1BA =01 staa TCTL2 ;on rise of PA2 ldd TCNT std First ;init global clr Done ldaa #$04 ;clear IC1F staa TFLG1 ldaa TMSK1 ;Old value oraa #$04 ;IC1I=1 staa TMSK1 ;Arm IC1F cli ;enable rts; Program 6.5. ISR for period measurement.; MC68HC11A8IC1Han ldaa #$01 ;clear IC3F [2] staa TFLG1 ;Acknowledge [4] ldd TIC1 [5] subd First [6] std Period [5] ldd TIC1 [5] std First [5] ldaa #$FF ;set flag [2] staa Done [4] rti [12] org $FFEE fdb IC1Han; Program 6.11. Ritual written in assembly language for the pulse width measurement.; MC68HC11A8; B=PB7, Q=PA1/IC2 Init ldx #$1000 ;I/O registers ldaa #$00 ;gadfly staa $22,X ;TMSK1 IC2I=0 rts; Program 6.12. Assembly language pulse width measurement.; MC68HC11A8; return Reg D as R in KohmRising equ 0 ;First TCNT Meas ldx #$1000 ;I/O registers ldaa #$04 ;Rising edge staa $21,X ;Set TCTL2 bclr $23,X,$FD ;IC2F=0 bclr $04,X,$80 ;PB7=0 bset $04,X,$80 ;PB7=1 First brclr $23,X,$02,First;Wait for first rising edge ldy $12,X ;TCNT at rising ldaa #$08 ;Falling edge staa $21,X ;Set TCTL2 bclr $23,X,$FD ;IC2F=0 pshy ;Save on stackSecond brclr $23,X,$02,Second;Wait for next falling edge ldd $12,X ;TCNT at falling tsy subd Rising,Y;RegD=pulse width 1000 to 2000 cyc subd #1000 ;0<=R<=1000Kohm puly rts; Program 6.19. Assembly language ritual for periodic interrupt using output compare.; MC68HC11A8TIME rmb 2 ;inc every 1msInit sei ;make atomic ldaa TMSK1 ;Old value oraa #$08 ;TMSK1 OC5I=1 staa TMSK1 ;Arm OC5F ldd #0 std TIME ;initialize ldaa #$08 ;clear OC5F staa TFLG1 ldd TCNT ;current time addd #2000 ;first in 1 ms std TOC5 cli ;enable rts; Program 6.20. Assembly language ISR for periodic interrupt using output compare.; MC68HC11A8OC5HAN ldx TIME [5] inx [3] stx TIME [5] ldaa #$08 ;clear OC5F staa TFLG1 ;Acknowledge ldd TOC5 addd #2000 ;next std TOC5 rti org $FFE0 fdb OC5HAN; Program 6.22. Ritual for the assembly language implementation of the squarewave using output compare.; MC68HC11A8Period rmb 2 ;units 祍ecInit sei ;make atomic ldaa TMSK1 ;Old value oraa #$20 ;TMSK1 OC3I=1 staa TMSK1 ;Arm OC3F ldaa TCTL1 anda #$CF ;OM3=0 oraa #$10 ;OL3=1 staa TCTL1 ldaa #$20 ;clear OC3F staa TFLG1 ldd TCNT ;current time addd #2000 ;first in 1 ms std TOC3 cli ;enable rts; Program 6.23. Assembly language squarewave using output compare.; MC68HC11A8OC3HAN ldaa #$20 ;clear OC3F [2] staa TFLG1 ;Ack [4] ldd TOC3 [5] addd Period ;next [6] std TOC3 [5] rti [12] org $FFE4 fdb OC3HAN; Program 6.25. Assembly language initialization pulse-width modulated squarewave using output compare.; MC68HC11A8High rmb 2 ;number of cycles highLow rmb 2 ;number of cycles lowRITUAL sei ;make atomic ldaa TMSK1 ;Old value oraa #$20 ;TMSK1 OC3I=1 staa TMSK1 ;Arm OC3F ldaa TCTL1 oraa #$30 ;OM3=1, OL3=1 staa TCTL1 ldaa #$20 ;clear OC3F staa TFLG1 ldd TCNT ;current time addd #50 ;first in 25祍 std TOC3 cli ;enable rts; Program 6.26. Assembly language ISR for pulse-width modulated squarewave using output compare.; MC68HC11A8OC3HAN ldaa #$20 ;clear OC3F [2] staa TFLG1 ;Ack [4] ldaa TCTL2 ;rise/fall? [4] bita #$10 [2] beq zero [3]one ldd TOC3 [5] addd High ;OC3 is 1 [6] std TOC3 [5] ldaa TCTL2 [4] anda #$BF [2] staa TCLT2 [4] bra done [3]zero ldd TOC3 [5] addd Low ;OC is 0 [6] std TOC3 [5] ldaa TCTL2 [4] oraa #$40 [2] staa TCLT2 [4]done rti [12] org $FFE4 fdb OC3HAN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -