pwm.dbg 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. ;export symbols
  2. XDEF PulseWidthMod
  3. XREF __SEG_END_SSTACK,TON,TOFF,PRESSED,PORT_T,FourMSDelay,Keypad
  4. PulseWidthMod:
  5. PSHA ;preserve registers
  6. PSHB
  7. PSHX
  8. PSHY
  9. PulseWidthMain:
  10. JSR Keypad ;call Keypad subroutine
  11. LDAA PRESSED ;load the pressed value ;7.1 ?
  12. CMPA #$00 ;check if no value has been pressed ;7.1 ?
  13. ; use previous value for TON and TOFF ?
  14. BEQ Return ;go back to the calling routine
  15. CheckTON:
  16. LDAB TON ;load TON to check if TON is zero
  17. CMPB #$00 ;conditional if TON is zero
  18. ;BEQ CheckTOFF ;check TOFFF if TON is zero
  19. BNE SetTAndDelay;following instructions? ;7.1 ?
  20. CheckTOFF: ;will be called if TON is equal to zero
  21. LDAB TOFF ;load TOFF into Acc. B
  22. CMPB #$00 ;check if TOFF == #$00
  23. BEQ PulseWidthMain ;"branch back to the keypad routine" ? should this be BEQ Keypad ?
  24. SetTAndDelay:
  25. BSET PORT_T,#%00001000 ;set bit 3 of Port T
  26. JSR FourMSDelay ;delay 4 ms
  27. LDAA TON ;load TON into Acc. A
  28. DECA ;decrement A
  29. STAA TON ;now we have decremented TON by way of Acc. A0
  30. BRA CheckTON ;check TON again
  31. ClearTAndDelay:
  32. BCLR PORT_T,#%00001000 ;clear bit 3 of Port T
  33. JSR FourMSDelay ;delay 4 ms
  34. LDAA TOFF ;load TOFF into Acc. A
  35. DECA ;decrement A
  36. STAA TOFF ;TOFF has been effectively decremented
  37. BRA CheckTOFF ;check TOFF again after decrementation
  38. Return:
  39. PULY ;restore the registers
  40. PULX
  41. PULB
  42. PULA
  43. RTI