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

📄 sensor.asm

📁 基于9S12(MOTOROLA)单片机的REMOTE SENSOR SHARP is1u60_SH 的信号接收程序。此SENSOR MODULE可用于接收多种红外信号
💻 ASM
字号:
;
; Security System/Sensor Module/Remote Control sensor/
; /1.1.1/sensor test program
;======================================================

REGBASE	equ	$0000
RAMBASE	equ	$3800
INITRM	equ	$0010			; RAM Position
INITRG	EQU	$0011			; Register position

SYNR	equ	$34
REFDV	equ	$35
CRGFLG	equ	$37
CLKSEL	equ	$39
PLLCTL	equ	$3A
COPCTL	equ	$3c

PORTT	equ	$0240
DDRT	equ	$0242

PTRX    equ     $01  			;PORTTinput pin from IR
PTRX2   equ     $02                     ;PT0 and PT1

EN      equ     $04    			;PORTToutput pin to HBridge
A1      equ     $08
A2      equ     $10
A3      equ     $20
A4      equ     $40

SCIBDH  equ     $00C8
SCIBDL  equ     $00C9
SCICR1	equ     $00CA
SCICR2  equ     $00CB
SCISR1  equ     $00CC
SCISR2  equ     $00CD
SCIDRH  equ     $00CE
SCIDRL  equ     $00CF

	org     $3800
COUNT   rmb     1


	org $8000			; start of program memory

BadInt					; handle UNexpected interrupts...
	rti

startup_code
        sei				; Disable interrupts
	movb #$00,INITRG		; set registers to $0000
	movb #$39, INITRM		; init RAM ($3800 - $3fff)
        lds #$3fce	    		; init stack
	cli				; enable interrupts

	bclr CLKSEL, #$80	 	; disengage PLL to system
	bset PLLCTL, #$40	 	; turn on PLL
	movb #$2, SYNR		 	; set PLL multiplier
	movb #$0, REFDV		 	; set PLL divider
	nop
	nop
	brclr CRGFLG, #$08, >*+0 	; while (!(crg.crgflg.bit.lock==1))
	bset CLKSEL, #$80	 	; engage PLL to system

	movb #$40, COPCTL	 	; COP off; RTI and COP stopped in BDM-mode
	movb  #$FC, DDRT	 	;make port T I/O port
					;0=input, 1=output
	LDX  	#$009C           	;SET SCI
	STX     SCIBDH
	LDAA    #$0C
	STAA    SCICR2                  ;TE and RE enabled

;------------------------------------------------------------------
; User Program
	bset    PORTT,EN
START:
	brclr	SCISR1,$20,START
	LDAA    SCIDRL
 	CMPA    #$20
 	BEQ    USER_START
	BRA    START

USER_START:
	Bclr    SCISR1,$20
        brclr	SCISR1,$20,INI
 	LDAA    SCIDRL
 	CMPA    #$20
 	BEQ    START
	BRA    INI
INI:
  	LDAA    #$00
	LDAB    #$00

CHECK_STARTBIT:
	BRSET   PORTT,#PTRX,CHECK_STARTBIT
	JSR     d_1ms
	BRCLR   PORTT,#PTRX,inccount1
	JMP     inccount0
inccount1:
	INCA
	LDAB    #$31
	JSR     TX
	CMPA    #13
	BEQ     DONE
stay1:	BRSET   PORTT,#PTRX,CHECK_STARTBIT
	bra     stay1
inccount0:
        INCA
	LDAB    #$30
	JSR     TX
	CMPA    #13
	BEQ     DONE
stay2:	BRSET   PORTT,#PTRX,CHECK_STARTBIT
	bra     stay2

DONE:
	LDAB    #$20
	JSR     TX
	JSR     d_200ms
	JMP     USER_START

TX:	brclr   SCISR1,$80,TX   ; TX VIA RS232
	STAB    SCIDRL
	rts
;==========================================================
d_100us: ldab	#100		; delay 100 us
	jmp	dly2
d_80us: ldab	#80		; delay 80 us
	jmp	dly2
d_190us: ldab   #180
	jmp     dly2
d_200us: ldab   #200
	jmp     dly2
dly2:	ldy	#6		; (6 = 1us @ 24,000 cycles)
dly3:	dey			; 1 cycle
	bne	dly3		; 3 cycles
	decb
	bne	dly2
	rts

d_1ms: 	ldab	#1		; delay 1 ms
	jmp	dly1
d_2ms: 	ldab	#2		; delay 1 ms
	jmp	dly1
d_50ms: ldab	#50		; delay 50ms
	jmp	dly1
d_200ms: ldab	#200		; delay 200ms
	jmp	dly1
dly1:	ldy	#6000		; (6000 = 1ms @ 24,000 cycles)
dly:	dey			; 1 cycle
	bne	dly		; 3 cycles
	decb
	bne	dly1
	rts


; ------------------ VECTOR TABLE --------------------
	org	$FF8A
	fdb	BadInt	;$FF8A: VREG LVI
	fdb	BadInt	;$FF8C: PWM emergency shutdown
	fdb	BadInt	;$FF8E: PortP
	fdb	BadInt	;$FF90: Reserved
	fdb	BadInt	;$FF92: Reserved
	fdb	BadInt	;$FF94: Reserved
	fdb	BadInt	;$FF96: Reserved
	fdb	BadInt	;$FF98: Reserved
	fdb	BadInt	;$FF9A: Reserved
	fdb	BadInt	;$FF9C: Reserved
	fdb	BadInt	;$FF9E: Reserved
	fdb	BadInt	;$FFA0: Reserved
	fdb	BadInt	;$FFA2: Reserved
	fdb	BadInt	;$FFA4: Reserved
	fdb	BadInt	;$FFA6: Reserved
	fdb	BadInt	;$FFA8: Reserved
	fdb	BadInt	;$FFAA: Reserved
	fdb	BadInt	;$FFAC: Reserved
	fdb	BadInt	;$FFAE: Reserved
	fdb	BadInt	;$FFB0: CAN transmit
	fdb	BadInt	;$FFB2: CAN receive
	fdb	BadInt	;$FFB4: CAN errors
	fdb	BadInt	;$FFB6: CAN wake-up
	fdb	BadInt	;$FFB8: FLASH
	fdb	BadInt	;$FFBA: Reserved
	fdb	BadInt	;$FFBC: Reserved
	fdb	BadInt	;$FFBE: Reserved
	fdb	BadInt	;$FFC0: Reserved
	fdb	BadInt	;$FFC2: Reserved
	fdb	BadInt	;$FFC4: CRG self-clock-mode
	fdb	BadInt	;$FFC6: CRG PLL Lock
	fdb	BadInt	;$FFC8: Reserved
	fdb	BadInt	;$FFCA: Reserved
	fdb	BadInt	;$FFCC: Reserved
	fdb	BadInt	;$FFCE: PORTJ
	fdb	BadInt	;$FFD0: Reserved
	fdb	BadInt	;$FFD2: ATD
	fdb	BadInt	;$FFD4: Reserved
	fdb	BadInt	;$FFD6: SCI Serial System
	fdb	BadInt	;$FFD8: SPI Serial Transfer Complete
	fdb	BadInt	;$FFDA: Pulse Accumulator Input Edge
	fdb	BadInt	;$FFDC: Pulse Accumulator Overflow
	fdb	BadInt	;$FFDE: Timer Overflow
	fdb	BadInt	;$FFE0: Standard Timer Channel 7
	fdb	BadInt  ;$FFE2: Standard Timer Channel 6
	fdb	BadInt	;$FFE4: Standard Timer Channel 5
	fdb	BadInt	;$FFE6: Standard Timer Channel 4
	fdb	BadInt	;$FFE8: Standard Timer Channel 3
	fdb	BadInt	;$FFEA: Standard Timer Channel 2
	fdb	BadInt	;$FFEC: Standard Timer Channel 1
	fdb	BadInt	;$FFEE: Standard Timer Channel 0
	fdb	BadInt	;$FFF0: Real Time Interrupt (RTI)
	fdb	BadInt	;$FFF2: IRQ (External Pin or Parallel I/O) (IRQ)
	fdb	BadInt	;$FFF4: XIRQ (Pseudo Non-Maskable Interrupt) (XIRQ)
	fdb	BadInt	;$FFF6: Software Interrupt (SWI)
	fdb	BadInt	;$FFF8: Illegal Opcode Trap ()
	fdb	startup_code	;$FFFA: COP Failure (Reset) ()
	fdb	BadInt		;$FFFC: Clock Monitor Fail (Reset) ()
	fdb	startup_code	;$FFFE: /RESET

⌨️ 快捷键说明

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