adc10_1int.asm

来自「CYPRESS的PSOC的AD转换编程」· 汇编 代码 · 共 94 行

ASM
94
字号
;;*****************************************************************************
;;*****************************************************************************
;;  ADC10_1INT.asm
;;  Version: 1.1, Updated on 2007/03/15 at 12:42:35
;;  Generated by PSoC Designer ver 4.4  b1884 : 14 Jan, 2007
;;
;;  DESCRIPTION: ADC10_1 User Module ISR implementation file for the
;;               21xxx PSoC family of devices.
;;*****************************************************************************
;;*****************************************************************************

include "m8c.inc"
include "memory.inc"
include "ADC10_1.inc"

export _ADC10_1_ADC_ISR
export _ADC10_1_CNT_ISR

export  ADC10_1_bTempMSB
export _ADC10_1_iResult
export  ADC10_1_iResult
export _ADC10_1_bfStatus
export  ADC10_1_bfStatus

AREA InterruptRAM (RAM, REL)
   ADC10_1_bTempMSB:      BLK   1
  _ADC10_1_iResult:
   ADC10_1_iResult:       BLK   2  ;A/D value
  _ADC10_1_bfStatus:
   ADC10_1_bfStatus:      BLK   1  ;Data Valid Flag
AREA UserModules (ROM, REL)

_ADC10_1_ADC_ISR:
; ISR ,including jmptable takes 156 cpu cycles.)
   tst  reg[ADC10_1_CNTClrIntReg],ADC10_1_CNTMask
   jz NoPendingInterrupt;  Make sure counter has been serviced
   inc  [ADC10_1_bTempMSB]
   and  reg[ADC10_1_CNTClrIntReg],~(ADC10_1_CNTMask)
NoPendingInterrupt:
   push A
   tst  reg[ADC10_1_ADC_CR],80h
   jz   .InRange

; Read Counter
.OverRange:
   mov  [ADC10_1_iResult],ffh
   mov  [ADC10_1_iResult + 1],ffh
   jmp  .Done

.InRange:
   mov  [ADC10_1_iResult],[ADC10_1_bTempMSB]
   mov  A,reg[ADC10_1_CNT_DR0]
   mov  A,reg[ADC10_1_CNT_DR2]   ;A contains next prev value
   cpl  A
   mov  [ADC10_1_iResult+1],A
.Done:
   and  reg[ADC10_1_CNT_CR0], ~ADC10_1_ON 
   mov  reg[ADC10_1_CNT_DR1], 0xFF
   or   reg[ADC10_1_CNT_CR0], ADC10_1_ON

   mov  [ADC10_1_bfStatus],01h
   mov  [ADC10_1_bTempMSB], 00h

   ;@PSoC_UserCode_BODY_1@ (Do not change this line.)
   ;---------------------------------------------------
   ; Insert your custom code below this banner
   ;---------------------------------------------------
   ;   NOTE: interrupt service routines must preserve
   ;   the values of the A and X CPU registers.

   ;---------------------------------------------------
   ; Insert your custom code above this banner
   ;---------------------------------------------------
   ;@PSoC_UserCode_END@ (Do not change this line.)

   pop A
   reti

_ADC10_1_CNT_ISR:
   inc [ADC10_1_bTempMSB]

   ;@PSoC_UserCode_BODY_2@ (Do not change this line.)
   ;---------------------------------------------------
   ; Insert your custom code below this banner
   ;---------------------------------------------------
   ;   NOTE: interrupt service routines must preserve
   ;   the values of the A and X CPU registers.

   ;---------------------------------------------------
   ; Insert your custom code above this banner
   ;---------------------------------------------------
   ;@PSoC_UserCode_END@ (Do not change this line.)
   reti

⌨️ 快捷键说明

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