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

📄 sn8p1917_test.asm

📁 SONIX SN1917 测试代码
💻 ASM
字号:
ICE_Mode	EQU 1
		CHIP		sn8p1917
//{{SONIX_CODE_OPTION
	.Code_Option	High_Clk	IHRC
	.Code_Option	Security	Enable
	.Code_Option	Int_16K_RC	Always_ON
	.Code_Option	Low_Power	Enable
	.Code_Option	Watch_Dog	Enable
;	.Code_Option	Low_Power	Enable
;	.Code_Option	TC0_Counter	8-Bit
;	.Code_Option	TC1_Counter	8-Bit
;	.Code_Option	Noise_Filter	Enable
;;	.Code_Option	OSG		Enable
;	.Code_Option	High_Clk	4M_X'tal
;	.Code_Option	High_Clk/2	Enable
;	.Code_Option	Security	Enable
;	.Code_Option	Int_16K_RC	Always_ON
;	.Code_Option	Watch_Dog	Enable

//}}SONIX_CODE_OPTION
.DATA
;===============================;
;	常量定义		;
;===============================;	
;	硬件结构		;
;===============================;
;	寄存器定义		;
;===============================;
ACCBUF		DS	1	;
AINCNT		DS	1	;
AINBUFF0_H	DS	1	;
AINBUFF1_H	DS	1	;
AINBUFF2_H	DS	1	;
AINBUFF3_H	DS	1	;
AINBUFF4_H	DS	1	;

AINBUFF0_L	DS	1	;
AINBUFF1_L	DS	1	;
AINBUFF2_L	DS	1	;
AINBUFF3_L	DS	1	;
AINBUFF4_L	DS	1	;

AINBUFF_H	DS	1	;
AINBUFF_L	DS	1	;

R0		DS	1	;
R1		DS	1	;
R2		DS	1	;
R3		DS	1	;

RUN5MS		DS	1	;

FLAG10H		DS	1	;
FLAG11H		DS	1	;

UPDATATIME	DS	1	;
DISBUFF0	DS	1	;
DISBUFF1	DS	1	;
DISBUFF2	DS	1	;
DISBUFF3	DS	1	;
DISBUFF4	DS	1	;
DISBUFF5	DS	1	;
DISBUFF6	DS	1	;
m_AdValueLsb	DS	1
m_AdValueMsb	DS	1
m_AdValueHsb	DS	1
m_AdScanCnt	DS	1
;===============================;
;	标志寄存器定义		;
;===============================;
PFLAGMS500	EQU	FLAG11H.0;

includeSTD	macro1.h
includeSTD	macro2.h
includeSTD	macro3.h
include		1917Ev.h
.CODE
	ORG	 0H
	JMP	 START
	ORG 	 08H
	JMP	 INT_PROC
	ORG 10
;		include	LCD.asm
INT_PROC:
	B0XCH	 A,ACCBUF	;推入A
	B0BTS0	 FT0IRQ		;
	JMP	 INT_T0		;
INT_T0:
	B0BCLR	 FT0IRQ		;
	MOV	 A,#02H		;
	XOR	 P1,A		;
	B0BSET	 PFLAGMS500	;
	MOV	 A,#01H		;
	XOR	 DISBUFF1,A	;
INTOUT:
	B0XCH	 A,ACCBUF	;推出A
	RETI			;
;===============================;
LEDTABLE:			;dcba egfx
	DW	 00FAH		;0
	DW	 0060H		;1
	DW	 00BCH		;2
	DW	 00F4H		;3
	DW	 0066H		;4
	DW	 00D6H		;5
	DW	 00DEH		;6
	DW	 0070H		;7
	DW	 00FEH		;8
	DW	 00F6H		;9
	DW	 00F6H		;A
	DW	 00CEH		;B
	DW	 009AH		;C
	DW	 00ECH		;D
	DW	 009EH		;E
	DW	 001EH		;F
START:	

	b0bset	 FLCDENB	
	call	 SYSINITE	;
	CALL	 INITE		;
	INIT_1917EV		;for ICE mode 
	MOV	 A,#0F4H	;
	B0MOV	 DISBUFF0,A	;
	B0MOV	 DISBUFF1,A	;
	B0MOV	 DISBUFF2,A	;
;	B0MOV	 DISBUFF3,A	;
;	B0MOV	 DISBUFF4,A	;
;	B0MOV	 DISBUFF5,A	;
	MOV	 A,#04		;
	B0MOV	 m_AdScanCnt,A	;
	clr	m_AdValueHsb
	clr	m_AdValueMsb
	clr	m_AdValueLsb
MAIN:
	CALL	 LCDUPDATA	;LCD显示
	CALL 	ADC16BITSUB	;ADC采集
	JMP	 MAIN		;
;===============================;
;	LCD驱动			;
;===============================;
LCDUPDATA:
	MOV	 A,RUN5MS	;
	SUB	 A,UPDATATIME	;
	SUB	 A,#17		;
	B0BTS1	 FC		;
	JMP	 LCDUPDATAOUT	;
	MOV	 A,RUN5MS	;
	B0MOV	 UPDATATIME,A	;
;	B0BCLR	 FP2SEG		;
	B0BCLR	 FLCDBIAS		;1/2BIAS
	B0BSET	 FLCDENB	;

	MOV	 A,#15		;
	B0MOV	 Y,A		;
	CLR	 Z		;
	MOV	 A,DISBUFF0	;
	B0MOV	 @YZ,A		;
	incms	 z		;
	SWAP	 DISBUFF0	;
	AND	 A,#0FH		;去掉高四位,可有可无
	B0MOV	 @YZ,A		;
	INCMS	 Z		;
	MOV	 A,DISBUFF1	;
	B0MOV	 @YZ,A		;
	incms	 z		;
	SWAP	 DISBUFF1	;
	AND	 A,#0FH		;
	B0MOV	 @YZ,A		;
	INCMS	 Z		;
	MOV	 A,DISBUFF2	;
	B0MOV	 @YZ,A		;
	incms	 z		;
	SWAP	 DISBUFF2	;
	AND	 A,#0FH		;
	B0MOV	 @YZ,A		;
	INCMS	 Z		;
	MOV	 A,DISBUFF3	;
	B0MOV	 @YZ,A		;
	incms	 z		;
	SWAP	 DISBUFF3	;
	B0MOV	 @YZ,A		;
	INCMS	 Z		;
	MOV	 A,DISBUFF4	;
	B0MOV	 @YZ,A		;
	incms	 z		;
	SWAP	 DISBUFF4	;
	B0MOV	 @YZ,A		;
	INCMS	 Z		;
	MOV	 A,DISBUFF5	;
	B0MOV	 @YZ,A		;
	incms	 z		;
	SWAP	 DISBUFF5	;
	B0MOV	 @YZ,A		;

	CLR	 Y		;
LCDUPDATAOUT:
	RET			;
;===============================;
;	16位ADC			;
;===============================;
ADC16BITSUB:
	B0BSET	 FWDRST		;
	B0BTS1	 PFLAGMS500	;
	JMP	 ADC16BITSUBOUT	;
	B0BCLR   PFLAGMS500	;	 
	mov	 A,#04H		// CHARGE PUMP ALWAYS ON
	XMOV	 CPM,A
	mov	 A,#156		// SET CP WORKING CLOCK = 20K AT 4M X`tal
	XMOV	 CPCKS, A
        xb0bset	 FCPRENB		// ENABLE CPR
	CALL 	 DELAY100US	;

//	mov	A,#16H		// DISABLE PGIA FUNCTION, SET GAIN T0 128 AND SET FDS AT ALL TIME
//	mov	A,#14H		// DISABLE PGIA FUNCTION, SET GAIN T0 64 AND SET FDS AT ALL TIME
	mov	A,#12H		// DISABLE PGIA FUNCTION, SET GAIN T0 32 AND SET FDS AT ALL TIME
	XMOV	AMPM,A
	mov	A,#131		// SET PGIA WORKING CLOCK TO 4KHZ AT 4M X`tal
	XMOV	AMPCKS,A
	mov	A,#01H		// SELECT CHANNEL 0 (AI2+ AI2-) 
	XMOV	AMPCHS,A
        xb0bset	FAMPENB		// ENABLE PGIA

	mov	A,#04H		// SELECT 2.4R+ 1.2R-
	XMOV	ADCM,A
	mov	A,#231		// SET ADC WORKING CLOCK TO 80KHZ AT 4M X`tal
	XMOV	ADCKS,A
	mov	A,#00H		// ADC WORKING IN CONTINUOUS MODE AND SET OUTPUT RATE = 25HZ AT 80KHZZA
	XMOV	DFM,A
	Xb0bclr	FDRDY
  	xb0bset	FADCENB		// ENABLE ADC
@@:
	Xb0bts1	FDRDY		; Check ADC output new data or not
	jmp	@B		; Wait for Bit DRDY = 1
	Xb0bclr	FDRDY

	B0MOV	 Z,#AINBUFF0_H	;
	MOV	 A,AINCNT	;
	ADD	 Z,A		;
	XMOV 	 A,ADCDH	;
	B0MOV	 @YZ,A		;
	CLR	 Y		;
	B0MOV	 Z,#AINBUFF0_L	;
	MOV	 A,AINCNT	;
	ADD	 Z,A		;
	XMOV	 A,ADCDL	;
	B0MOV	 @YZ,A		;	
	INCMS	 AINCNT		;
	MOV	 A,AINCNT	;
	SUB	 A,#05		;
	B0BTS1	 FC		;
	JMP	 ADC16BITSUBOUT	;
	CLR	 AINCNT		;
	CALL	 ADTAXIS	;
	XMOV 	 A,ADCDH	;
	B0MOV	 AINBUFF_H,A	;
	XMOV	 A,ADCDL	;
	B0MOV	 AINBUFF_L,A	;

	MOV	 A,#LEDTABLE$M	;
	B0MOV	 Y,A		;
	MOV	 A,#LEDTABLE$L	;
	B0MOV	 Z,A		;
	MOV	 A,AINBUFF2_H	;
	ADD	 Z,A		;
	MOVC			;
	B0MOV	 DISBUFF0,A	;

	MOV	 A,AINBUFF2_L	;
	AND	 A,#0FH		;
	B0MOV	 R0,A		;
	SWAP	 AINBUFF2_L	;
	AND	 A,#0FH		;
	B0MOV	 R1,A		;
	MOV	 A,#LEDTABLE$M	;
	B0MOV	 Y,A		;
	MOV	 A,#LEDTABLE$L	;
	B0MOV	 Z,A		;
	MOV	 A,R1		;
	ADD	 Z,A		;
	MOVC			;
	B0MOV	 DISBUFF1,A	;
	MOV	 A,#LEDTABLE$M	;
	B0MOV	 Y,A		;
	MOV	 A,#LEDTABLE$L	;
	B0MOV	 Z,A		;
	MOV	 A,R0		;
	ADD	 Z,A		;
	MOVC			;
	B0MOV	 DISBUFF2,A	;
	
	NOP
ADC16BITSUBOUT:
	RET			;
;===============================;
DELAY100US:
	MOV	 A,#100		;
	B0MOV	 R0,A		;
@@:
	JMP	 $+1		;
	DECMS	 R0		;
	JMP	 @B		;
	RET			;
;===============================;
;	数据初始化		;
;===============================;
INITE:
	RET			;
;===============================;
;	系统初始化		;
;===============================;
SYSINITE:
	clr	OSCM
	clr 	INTEN			// TO DISABLE B0:INT0 B1:INT1 B3:SIO B4:T0 B5:TC0 B6:TC1
	clr	INTRQ			// TO CLEAR ALL REQUEST FLAGS
	CLR	 Y		;
	MOV	 A,#127		;
	B0MOV	 Z,A		;
@@:
	CLR	 @YZ		;CLEAR RAM
	DECMS	 Z		;
	JMP	 @B		;
	CLr	 @YZ		;

	MOV	 A,#15		;CLEAR LCD RAM
	B0MOV	 Y,A		;
	MOV	 A,#12		;
	B0MOV	 Z,A		;
@@:
	CLR	 @YZ		;
	DECMS	 Z		;
	JMP	 @B		;
	CLR	 @YZ		;
	NOP
	CLR	 Y		;

	CLR	 P1		;
	MOV	 A,#0FFH	;
	B0MOV	 P1M,A		;设P1口为输出模式
	
;	MOV	 A,#00H		// SET P5.0~2 TO GENERAL PURPOSE PORT
;	B0MOV	 SIOM,A
;===========T0中断==============;
;	mov	A,#00H		// 0.5 second
;	b0mov	OPTION,A
	mov	A,#0		// real time
	b0mov	T0M,A
	b0bset	FT0IEN		// TO ENABLE T0 INTERRUPT
	b0bset	FT0ENB		// TO ENABLE T0 RUN


;===============================;
	include		1917Ev.asm	
endp

⌨️ 快捷键说明

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