; Asm codes generated by Shanghai Haier C Compiler
; HRCO, Ver: 1.0,0117

#INCLUDE       	<ES7P169C.INC>
#INCLUDE       	<OPERATION.INC>
	PUBLIC         	_RAMclear
	PUBLIC         	_GPIOInit
	PUBLIC         	_main
#TMP	EQU            	?_TMP+ 0X0		; Bank 0
?_TMP_RET	EQU            	?_TMP		; Bank 0
_UPT_0#sh	EQU            	0X698		; Bank 0
_T31C0L_0#sh	EQU            	0XC1		; Bank 0
_T31C2L_0#sh	EQU            	0XC5		; Bank 0
_T31CH1C_0#sh	EQU            	0XD4		; Bank 0
_T31CH2C_0#sh	EQU            	0XD5		; Bank 0
_T31PINCL_0#sh	EQU            	0XD8		; Bank 0
_T31PRSL_0#sh	EQU            	0XDC		; Bank 0
_T31PRSH_0#sh	EQU            	0XDD		; Bank 0
_T31CNTLDL_0#sh	EQU            	0XDE		; Bank 0
_T31CNTLDH_0#sh	EQU            	0XDF		; Bank 0
_T31CH1RL_0#sh	EQU            	0XE1		; Bank 0
_T31CH1RH_0#sh	EQU            	0XE2		; Bank 0
_MULA_0#sh	EQU            	(MULA - 0X6080) % 0X40 + 0xC0		; Bank 0
_MULB_0#sh	EQU            	(MULB - 0X6080) % 0X40 + 0xC0		; Bank 0
_MULL_0#sh	EQU            	(MULL - 0X6080) % 0X40 + 0xC0		; Bank 0
_MULH_0#sh	EQU            	(MULH - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEL_0#sh	EQU            	(DIVEL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEM_0#sh	EQU            	(DIVEM - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVSL_0#sh	EQU            	(DIVSL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVSH_0#sh	EQU            	(DIVSH - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVQL_0#sh	EQU            	(DIVQL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVQM_0#sh	EQU            	(DIVQM - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVRL_0#sh	EQU            	(DIVRL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVRH_0#sh	EQU            	(DIVRH - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVC_0#sh	EQU            	(DIVC - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEU_0#sh	EQU            	(DIVEU - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEH_0#sh	EQU            	(DIVEH - 0X6080) % 0X40 + 0xC0		; Bank 0
	_DESC          	RAMclear,0X0,0X0
RAMclear#	CSEG           
_RAMclear
; /*******************************************************
; *Copyright(C),2020,Shanghai Eastsoft Microelectronics Co.,Ltd.
; *文件名：compare_onepulse_output.c
; *作  者：AE Team
; *版  本：v1.0，编译于iDesigner(v4.2.3.166) + 工具链HRCC(v1.2.0.106)
; *日  期：2020/12/18
; *描  述：多功能定时器单脉冲输出模式，在T31_CH2(PB6)的上升沿时刻延时1ms后，T31_CH1(PB5)产生一个持续0.5ms的宽脉冲
; *备  注：本软件仅供学习和演示使用，对用户直接引用代码所带来的风险或后果不承担任何法律责任。
; *******************************************************/
; #include <hic.h>
; #define CLRWDT()   {__Asm CWDT;}        //宏定义清狗指令
; /******************************************************
; 函数名：void RAMclear(void)
; 描  述：RAM区数据清零，RAM区地址0x0000~0x03FF
; 输入值：无
; 输出值：无
; 返回值：无
; *******************************************************/
; void RAMclear(void)
; {
#line 23	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     for (IAAH=0; IAAH<=0x03; IAAH++)
	CLR            	BKSR
;   23:(    ASGN_1,          0 ,            ,      IAAH)

; ITemplate_CLR1_4_TMP
	CLR            	_IAAH_0
;   23:(     LABEL,    #L20268 ,            ,          )

; ITemplate_LABEL
#L20268
;   23:(    JGT_1U,       IAAH ,          3 ,   #L20345)

; ITemplate_JGT1_4U
	MOV            	_IAAH_0,	0x0
	SUBI           	0x3
	JBS            	PSW,	0x0
	GOTO           	#L20345
;     {
#line 25	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;         for (IAAL=0; IAAL<0xFF; IAAL++)
;   25:(    ASGN_1,          0 ,            ,      IAAL)

; ITemplate_CLR1_4_TMP
	CLR            	_IAAL_0
;   25:(     LABEL,    #L20285 ,            ,          )

; ITemplate_LABEL
#L20285
;   25:(    JGE_1U,       IAAL ,        255 ,   #L20286)

; ITemplate_JGE1_4U
	MOVI           	0xff
	SUB            	_IAAL_0,	0x0
	JBC            	PSW,	0x0
	GOTO           	#L20286
#line 26	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;             IAD = 0x00;
;   26:(    ASGN_1,          0 ,            ,       IAD)

; ITemplate_CLR1_4_TMP
	CLR            	_IAD_0
;   25:(     ADD_1,       IAAL ,          1 ,      IAAL)

; ITemplate_INC_1_TMP
	INC            	_IAAL_0
;   26:(       JMP,            ,            ,   #L20285)

; ITemplate_JMP
	GOTO           	#L20285
;   26:(     LABEL,    #L20286 ,            ,          )

; ITemplate_LABEL
#L20286
#line 27	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;         IAD = 0x00;
;   27:(    ASGN_1,          0 ,            ,       IAD)

; ITemplate_CLR1_4_TMP
	CLR            	_IAD_0
;   23:(     ADD_1,       IAAH ,          1 ,      IAAH)

; ITemplate_INC_1_TMP
	INC            	_IAAH_0
#line 28	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     }
;   28:(       JMP,            ,            ,   #L20268)

; ITemplate_JMP
	GOTO           	#L20268
#line 29	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ; }
;   29:(     LABEL,    #L20345 ,            ,          )

; ITemplate_LABEL
#L20345
;   29:(       RET,            ,            ,          )

; ITemplate_RET
	RET            			; Bank 0		; ShBank 0
	_DESC          	GPIOInit,0X0,0X0
GPIOInit#	CSEG           
_GPIOInit
; /******************************************************
; 函数名：void GPIOInit(void)
; 描  述：首先初始化所有未用到的IO口为输出低电平
; 输入值：无
; 输出值：无
; 返回值：无
; *******************************************************/
; void GPIOInit(void)
; {
#line 40	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     ANSH = 0xFF;        //选择对应端口为数字IO功能
	CLR            	BKSR
;   40:(    ASGN_1,        255 ,            ,      ANSH)

; ITemplate_ASGN1_4_R
	MOVI           	0xff
	MOVA           	_ANSH_0
#line 41	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     ANSL = 0xFF;        //选择对应端口为数字IO功能
;   41:(    ASGN_1,        255 ,            ,      ANSL)

; ITemplate_ASGN1_4_R
	MOVI           	0xff
	MOVA           	_ANSL_0
#line 42	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PAT = 0x00;         //所有IO设为输出低电平
;   42:(    ASGN_1,          0 ,            ,       PAT)

; ITemplate_CLR1_4_TMP
	CLR            	_PAT_0
#line 43	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PBT = 0x00;
;   43:(    ASGN_1,          0 ,            ,       PBT)

; ITemplate_CLR1_4_TMP
	CLR            	_PBT_0
#line 44	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PCT = 0x00;
;   44:(    ASGN_1,          0 ,            ,       PCT)

; ITemplate_CLR1_4_TMP
	CLR            	_PCT_0
#line 45	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PA = 0x00;
;   45:(    ASGN_1,          0 ,            ,        PA)

; ITemplate_CLR1_4_TMP
	CLR            	_PA_0
#line 46	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PB = 0x00;
;   46:(    ASGN_1,          0 ,            ,        PB)

; ITemplate_CLR1_4_TMP
	CLR            	_PB_0
#line 47	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PC = 0x00;
;   47:(    ASGN_1,          0 ,            ,        PC)

; ITemplate_CLR1_4_TMP
	CLR            	_PC_0
#line 49	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PBT6 = 1;                  //T31_CH2设为输入
;   49:(    ASGN_0,          1 ,            ,      PBT6)

; ITemplate_SET_0_TMP
	BSS            	(_PBT6_0)/8,	(_PBT6_0)%8
#line 50	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     PBPD6 = 1;                 //使能下拉
;   50:(    ASGN_0,          1 ,            ,     PBPD6)

; ITemplate_SET_0_TMP
	BSS            	(_PBPD6_0)/8,	(_PBPD6_0)%8
#line 51	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ; }
;   51:(       RET,            ,            ,          )

; ITemplate_RET
	RET            			; Bank 0		; ShBank 0
	_DESC          	main,0X0,0X0,RAMclear,GPIOInit
main#	CSEG           
_main
; /*******************************************************
; 函数名：void main(void)
; 描  述：主函数，单脉冲模式，在T31_CH2(PB6)的上升沿时刻延时1ms后，T31_CH1(PB5)产生一个持续0.5ms的宽脉冲
; 输入值：无
; 输出值：无
; 返回值：无
; *******************************************************/
; void main(void) 
; {
#line 62	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     RAMclear();
	CLR            	BKSR
;   62:(      CALL, (RAMclear.0) ,            ,          )

; ITemplate_CALL
	SEGMENTSEL     	_RAMclear
	CALL           	_RAMclear		; Bank 0		; ShBank 0
	SEGMENTSEL     	$
#line 63	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     GPIOInit();
;   63:(      CALL, (GPIOInit.0) ,            ,          )

; ITemplate_CALL
	SEGMENTSEL     	_GPIOInit
	CALL           	_GPIOInit		; Bank 0		; ShBank 0
	SEGMENTSEL     	$
;     //T31C0H = 0x00;
#line 65	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31C0L = 0x88;         //选择单脉冲模式，向上计数，使能T31CNTLD缓冲功能
;   65:(    ASGN_1,        136 ,            ,    T31C0L)

; ITemplate_ASGN1_4_R
	MOVI           	0x88
	MOVA           	_T31C0L_0#sh		; ShBank 0
#line 66	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31CH2C = 0x01;        //T31_CH2作为通道2的捕捉管脚，无滤波，无预分频
;   66:(    ASGN_1,          1 ,            ,   T31CH2C)

; ITemplate_ASGN1_4_R
	MOVI           	0x1
	MOVA           	_T31CH2C_0#sh		; ShBank 0
#line 67	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31CH1C = 0x78;        //pwm模式2，通道1配置为输出，使能T31CH1R缓冲功能
;   67:(    ASGN_1,        120 ,            ,   T31CH1C)

; ITemplate_ASGN1_4_R
	MOVI           	0x78
	MOVA           	_T31CH1C_0#sh		; ShBank 0
;     //T31PINCH = 0x00;      //通道3、通道4捕捉使能寄存器   
#line 69	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31PINCL = 0x01;      //通道2上升沿有效。通道1高电平有效，使能输出
;   69:(    ASGN_1,          1 ,            ,  T31PINCL)

; ITemplate_ASGN1_4_R
	MOVI           	0x1
	MOVA           	_T31PINCL_0#sh		; ShBank 0
#line 70	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31C2L = 0x66;        //通道2作为触发输入(TRGI)，TRGI上升沿启动计数器
;   70:(    ASGN_1,        102 ,            ,    T31C2L)

; ITemplate_ASGN1_4_R
	MOVI           	0x66
	MOVA           	_T31C2L_0#sh		; ShBank 0
#line 71	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31PRSH = 0x00;       //预分频系数1:16
;   71:(    ASGN_1,          0 ,            ,   T31PRSH)

; ITemplate_CLR1_4_TMP
	CLR            	_T31PRSH_0#sh		; ShBank 0
#line 72	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31PRSL = 0x0F;
;   72:(    ASGN_1,         15 ,            ,   T31PRSL)

; ITemplate_ASGN1_4_R
	MOVI           	0xf
	MOVA           	_T31PRSL_0#sh		; ShBank 0
#line 73	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31CNTLDH = 0x05;     //重装载值，脉冲宽度=(T31CNTLD-T31CH1R) * 预分频后的时钟周期
;   73:(    ASGN_1,          5 ,            , T31CNTLDH)

; ITemplate_ASGN1_4_R
	MOVI           	0x5
	MOVA           	_T31CNTLDH_0#sh		; ShBank 0
#line 74	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31CNTLDL = 0xDC;
;   74:(    ASGN_1,        220 ,            , T31CNTLDL)

; ITemplate_ASGN1_4_R
	MOVI           	0xdc
	MOVA           	_T31CNTLDL_0#sh		; ShBank 0
#line 75	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31CH1RH = 0x03;      //比较寄存器1值，触发时至脉冲产生的延时时间=T31CNTLD * 预分频后的时钟周期
;   75:(    ASGN_1,          3 ,            ,  T31CH1RH)

; ITemplate_ASGN1_4_R
	MOVI           	0x3
	MOVA           	_T31CH1RH_0#sh		; ShBank 0
#line 76	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     T31CH1RL = 0xE8;
;   76:(    ASGN_1,        232 ,            ,  T31CH1RL)

; ITemplate_ASGN1_4_R
	MOVI           	0xe8
	MOVA           	_T31CH1RL_0#sh		; ShBank 0
#line 77	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     UPT = 1;        //立即更新所有缓冲寄存器
;   77:(    ASGN_0,          1 ,            ,       UPT)

; ITemplate_SET_0_TMP
	BSS            	(_UPT_0#sh)/8,	(_UPT_0#sh)%8		; ShBank 0
#line 78	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     CHOE = 1;       //输出使能    
;   78:(    ASGN_0,          1 ,            ,      CHOE)

; ITemplate_SET_0_TMP
	BSS            	(_CHOE_0)/8,	(_CHOE_0)%8
;     //T31EN = 1;      //单脉冲模式，硬件自动设置T31EN = 1
#line 80	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     while (1)
;   80:(     LABEL,    #L20493 ,            ,          )

; ITemplate_LABEL
#L20493
;     {
#line 82	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;         CLRWDT();
; ITemplate_LABEL
;-----------Embedded Asm--------------
	CWDT
;-------------------------------------
#line 83	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\T31\compare_onepulse_output\compare_onepulse_output.c ;     }
;   83:(       JMP,            ,            ,   #L20493)

; ITemplate_JMP
	GOTO           	#L20493

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_T31_compare_onepulse_output_compare_onepulse_output_c_STATIC0	PSECT	FLAG=0X1088,ADDR=0X7FD76
_PBT6_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_T31_compare_onepulse_output_compare_onepulse_output_c_STATIC1	PSECT	FLAG=0X1088,ADDR=0X7FD8E
_PBPD6_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_T31_compare_onepulse_output_compare_onepulse_output_c_STATIC2	PSECT	FLAG=0X1088,ADDR=0X7FDFF
_CHOE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_T31_compare_onepulse_output_compare_onepulse_output_c_STATIC3	PSECT	FLAG=0X1088,ADDR=0X30498
_UPT_0	RSEG           	0X1		; Bank 0

SECTION8D__Program_Files__x86__iDesigner4_1_tools_INCLUDE_ES7P169C_h_STATIC	UNINTIAL       	0		; Bank 0
	ORG            	0XFF80		; Bank 0
_IAD_0	RSEG           	0X1		; Bank 0
	ORG            	0XFF81		; Bank 0
_IAAL_0	RSEG           	0X1		; Bank 0
	ORG            	0XFF82		; Bank 0
_IAAH_0	RSEG           	0X1		; Bank 0
	ORG            	0XFF8D		; Bank 0
_ANSH_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFA8		; Bank 0
_PA_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFA9		; Bank 0
_PB_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAA		; Bank 0
_PC_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAD		; Bank 0
_PAT_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAE		; Bank 0
_PBT_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAF		; Bank 0
_PCT_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFBC		; Bank 0
_ANSL_0	RSEG           	0X1		; Bank 0
	ORG            	0X6081		; Bank 0
_T31C0L_0	RSEG           	0X1		; Bank 0
	ORG            	0X6085		; Bank 0
_T31C2L_0	RSEG           	0X1		; Bank 0
	ORG            	0X6094		; Bank 0
_T31CH1C_0	RSEG           	0X1		; Bank 0
	ORG            	0X6095		; Bank 0
_T31CH2C_0	RSEG           	0X1		; Bank 0
	ORG            	0X6098		; Bank 0
_T31PINCL_0	RSEG           	0X1		; Bank 0
	ORG            	0X609C		; Bank 0
_T31PRSL_0	RSEG           	0X1		; Bank 0
	ORG            	0X609D		; Bank 0
_T31PRSH_0	RSEG           	0X1		; Bank 0
	ORG            	0X609E		; Bank 0
_T31CNTLDL_0	RSEG           	0X1		; Bank 0
	ORG            	0X609F		; Bank 0
_T31CNTLDH_0	RSEG           	0X1		; Bank 0
	ORG            	0X60A1		; Bank 0
_T31CH1RL_0	RSEG           	0X1		; Bank 0
	ORG            	0X60A2		; Bank 0
_T31CH1RH_0	RSEG           	0X1		; Bank 0
	END
