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

📄 myasm.asm

📁 assembly language program for programming adf7020 devices through pic16f628a
💻 ASM
字号:
	include <p16f628a.inc>

	__CONFIG _WDT_OFF; watchdog off

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
byte	equ		0x40
byte1	equ		0x30
byte2	equ		0x31
byte3	equ		0x32
byte4	equ		0x33
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	org		0
	goto	main
enable:
	bcf		STATUS, 0x06
	bcf		STATUS, 0x05; switch over to bank 0
	bsf		PORTB, 0x07; enable bit set
	return

progbyte:
	bcf		STATUS, 0x05
	movlw	0x08
	movwf	0x21
	
	bcf		PORTB, 0x06; SLE = 0
	bcf		PORTA, 0x04; SCLK = 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;1st byte

prog1:
	bcf		PORTA, 0x04; SCLK = 0
	btfss	byte1, 0x07; if (byte & 0x80)
	goto	clrdata1; else goto clrdata
	goto	setdata1; then goto setdata
setdata1:
	bsf		PORTA, 0x03
	goto	rejoin1
clrdata1:
	nop
	bcf		PORTA, 0x03
	goto	rejoin1
rejoin1:
	bsf		PORTA, 0x04; SCLK = 1
	nop
	rlf		byte1, 0x01; byte+=byte
	decfsz	0x21, 0x01
	goto	prog1
	goto	prbyte2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;2nd byte
prbyte2:
	bsf		0x21, 0x03
prog2:
	bcf		PORTA, 0x04; SCLK = 0
	btfss	byte2, 0x07; if (byte & 0x80)
	goto	clrdata2; then goto setdata
	goto	setdata2; else goto clrdata
setdata2:
	bsf		PORTA, 0x03
	goto	rejoin2
clrdata2:
	nop
	bcf		PORTA, 0x03
	goto	rejoin2
rejoin2:
	bsf		PORTA, 0x04; SCLK = 1
	nop
	rlf		byte2, 0x01; byte+=byte
	decfsz	0x21, 0x01
	goto	prog2
	goto	prbyte3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;3rd byte
prbyte3:
	bsf		0x21, 0x03
prog3:
	bcf		PORTA, 0x04; SCLK = 0
	btfss	byte3, 0x07; if (byte & 0x80)
	goto	clrdata3; then goto setdata
	goto	setdata3; else goto clrdata
setdata3:
	bsf		PORTA, 0x03
	goto	rejoin3
clrdata3:
	nop
	bcf		PORTA, 0x03
	goto	rejoin3
rejoin3:
	bsf		PORTA, 0x04; SCLK = 1
	nop
	rlf		byte3, 0x01; byte+=byte
	decfsz	0x21, 0x01
	goto	prog3
	goto	prbyte4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;4th byte
prbyte4:
	bsf		0x21, 0x03
prog4:
	bcf		PORTA, 0x04; SCLK = 0
	btfss	byte4, 0x07; if (byte & 0x80)
	goto	clrdata4; then goto setdata
	goto	setdata4; else goto clrdata
setdata4:
	bsf		PORTA, 0x03
	goto	rejoin4
clrdata4:
	nop
	bcf		PORTA, 0x03
	goto	rejoin4
rejoin4:
	bsf		PORTA, 0x04; SCLK = 1
	nop
	rlf		byte4, 0x01; byte+=byte
	decfsz	0x21, 0x01
	goto	prog4

latch_data:
	bcf		PORTA, 0x04
	nop
	bsf		PORTB, 0x06
	nop
	nop
	bcf		PORTB, 0x06
	bcf		PORTA, 0x04
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

main:
	bcf		STATUS, 0x5
	bcf		STATUS, 0x6; switch to bank 0
	movlw	0x07
	movwf	CMCON; enable PORTA pins for use
	
	bsf		STATUS, 0x5
	bcf		STATUS, 0x6; switch to bank 1
	movlw	0x26
	movwf	TRISA
	movlw	0x27
	movwf	TRISB
	
	call enable

	movlw	0xff; wait for sometime
	movwf	0x20; i=255
loop:
	decfsz	0x20, 0x01
	goto loop; while(i>0) i--
test:
	btfss	PORTA, 0x02; test for high muxout
	goto	loop; else delay again
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; programming order:
; i) r0
; ii) r1
; iii) r2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
prog_r0:
	movlw	0x69
	movwf	byte1
	movlw	0x4c
	movwf	byte2
	movlw	0x25
	movwf	byte3
	movlw	0x39
	movwf	byte4
	call	progbyte
prog_r1:
	movlw	0x69
	movwf	byte1
	movlw	0x4c
	movwf	byte2
	movlw	0x25
	movwf	byte3
	movlw	0x39
	movwf	byte4
	call	progbyte	
prog_r2:
	movlw	0x69
	movwf	byte1
	movlw	0x4c
	movwf	byte2
	movlw	0x25
	movwf	byte3
	movlw	0x39
	movwf	byte4
	call	progbyte

mainloop:
	goto mainloop; eternal loop
	end

⌨️ 快捷键说明

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