;***********************************************************
;单    位:苏州华芯微电子有限公司                           
;                                                          
;文件名称:	HS2300-P_GPIO.asm							   
;摘    要:	HS2300-P_GPIO.asm例程                          
;当期版本:  V3.0                                           
;作    者: 			                                       
;开始日期: 	                                      
;完成日期:  
;***********************************************************                                               
;
;功能说明：PB端口输出方波
;
;***********************************************************
;RC:	8MHz 2'
;RAM:	65 * 8
;ROM:	1K ×13
;STACK:	5 level
;***********************************************************


;--------------------SRAM----------------------
INDF		REG		00H
TMR0		REG		01H
PCL			REG		02H
;--------------
STATUS		REG		03H
	#define		RST		STATUS,7
	#define		T0		STATUS,4
	#define		PD		STATUS,3
	#define		Z		STATUS,2
	#define		DC		STATUS,1
	#define		C		STATUS,0
;--------------
FSR			REG		04H
PORTA		REG		05H

;--------------
PORTB		REG		06H
	#define		PB7		PORTB,7
	#define		PB6		PORTB,6
	#define		PB5		PORTB,5
	#define		PB4		PORTB,4
	#define		PB3		PORTB,3
	#define		PB2		PORTB,2
	#define		PB1		PORTB,1
	#define		PB0		PORTB,0		
;--------------
IOSTA		REG		05H
IOSTB		REG		06H
;--------------
PCON		REG		08H
	#define		WDTE	PCON,7
	#define		EIS		PCON,6
	#define		LVDTE	PCON,5	
;--------------
;--------------
WUCON		REG		09H
	#define		WUB7	WUCON,7
	#define		WUB6	WUCON,6
	#define		WUB5	WUCON,5
	#define		WUB4	WUCON,4
	#define		WUB3	WUCON,3
	#define		WUB2	WUCON,2
	#define		WUB1	WUCON,1
	#define		WUB0	WUCON,0	
;--------------
PCHBUF		REG		0AH

;--------------
PDCON		REG		0BH
	#define		PDB2	PDCON,6
	#define		PDB1	PDCON,5
	#define		PDB0	PDCON,4	
;--------------

;--------------
ODCON		REG		0CH
	#define		ODB7	ODCON,7
	#define		ODB6	ODCON,6
	#define		ODB5	ODCON,5
	#define		ODB4	ODCON,4
	#define		ODB2	ODCON,2
	#define		ODB1	ODCON,1
	#define		ODB0	ODCON,0	
;--------------

;--------------
PHCON		REG		0DH
	#define		PHB7	PHCON,7
	#define		PHB6	PHCON,6
	#define		PHB5	PHCON,5
	#define		PHB4	PHCON,4
	#define		PHB2	PHCON,2
	#define		PHB1	PHCON,1
	#define		PHB0	PHCON,0	
;--------------

;--------------
INTEN		REG		0EH
	#define		GIE		INTEN,7
	#define		TC1IE	INTEN,3
	#define		INTIE	INTEN,2
	#define		PBIE	INTEN,1
	#define		T0IE	INTEN,0
;--------------

;--------------
INTFLAG		REG		0FH
	#define		TC1IF	INTFLAG,3
	#define		INTIF	INTFLAG,2
	#define		PBIF	INTFLAG,1
	#define		T0IF	INTFLAG,0					
;--------------

;****************************RAM定义************************
DELAY_US	EQU		10H

;------------------------------------------
;程序起始地址
;------------------------------------------
	ORG		000H
	GOTO	SystemInit

SystemInit:	
	CALL	RAM_CLR	
	CALL	GPIO_init

MAIN:
	CLRWDT
	COMR	PORTB,1
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	GOTO	MAIN


;**************************************************************
;函数名：GPIO_init
;传参：无
;返回值：无
;功能：配置I/O口输出模式
;引脚：PA0,PA1,PA2,PA3,PB0,PB1,PB2,PB3,PB4,PB5,PB6,PB7
;备注：
;***************************************************************
GPIO_init:	
	;OPTION
	MOVIA	00000000B		;0000 0000
	OPTION					 
							;bit0~2:  PS2:PS0 :预分频比率选择位
								;PS2:PS0 	TMR0 比率	WDT 比率 
								;0 0 0		1:2			1:1
								;0 0 1		1:4			1:2 
								;0 1 0		1:8 		1:4 
								;0 1 1		1:16		1:8 
								;1 0 0		1:32 		1:16 
								;1 0 1		1:64		1:32 
								;1 1 0		1:128		1:64
								;1 1 1		1:256		1:128
							;bit3:	PSA		：预分频分配位
							;bit4:	T0SE	：TMR0 时钟源边沿选择位
							;bit5:	T0CS	：TMR0 时钟源选择位
							;bit6:	INTEDG	：外部中断触发方式选择位
							
	;I/O口控制寄存器
	MOVIA	00H				;0000 0000
	IOST	IOSTB			;0 = OUT  1 = IN		
	MOVIA	00H				;0000 0000
	MOVAR 	PORTB
	
	MOVIA	00H				;0000 0000
	IOST	IOSTA			;0 = OUT  1 = IN	
	MOVIA	00H				;0000 0000
	MOVAR 	PORTA
							
	;PCON(BANK1)(芯片控制寄存器)	
	MOVIA	0A0H			;1010 0000
	MOVAR	PCON   			 
							;bit5:LVDT: 低电压复位使能位
							;bit6:EIS:	IOB0/INT引脚定义位
							;bit7:WDT:  看门狗定时器使能位
	
	;WUCON(BANK0)(PORB输入状态变化中断/唤醒控制寄存器)
	MOVIA	00H				;0000 0000
	MOVAR	WUCON			;0-DIS, 1-EN
		
	;PDCON(BANK0)(内部下拉控制寄存器)
	MOVIA	0FFH			;1111 1111
	MOVAR	PDCON			;0-EN, 1-DIS	
	
	;ODCON(BANK0)(PB漏极开路控制寄存器)
	MOVIA	00H				;0000 0000
	MOVAR	ODCON			;0-DIS, 1-EN
	
	;PHCON(BANK0)(PB 内部上拉控制寄存器)
	MOVIA	0FFH			;1111 1111
	MOVAR	PHCON			;0-EN, 1-DIS
	
	RETURN


;*******************************************************************
;通用寄存器清0
;*******************************************************************
RAM_CLR:
	MOVIA	0X2F			;需清RAM数量		
	MOVAR	10H				;RAM起始地址，自建寄存器
	MOVIA	0X3F			
	MOVAR	FSR				;RAM结束地址
	
RAM_CLR_LOOP:	
	CLRR	INDF
	DECR	FSR,1
	DECRSZ	10H,1			;清RAM起始地址，自建寄存器
	GOTO	RAM_CLR_LOOP	
	
	CLRR	40H				;40~4f不可间接寻址
	CLRR	41H
	CLRR	42H
	CLRR	43H
	CLRR	44H
	CLRR	45H
	CLRR	46H
	CLRR	47H
	CLRR	48H
	CLRR	49H
	CLRR	4AH
	CLRR	4BH
	CLRR	4CH
	CLRR	4DH
	CLRR	4EH
	CLRR	4FH
	RETURN
