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

#INCLUDE       	<ES7P169C.INC>
#INCLUDE       	<OPERATION.INC>
	PUBLIC         	_timer_cnt
	PUBLIC         	_RAMclear
	PUBLIC         	_GPIOInit
	PUBLIC         	_main
_main_i_7	EQU            	_mainDATA + 0X0		; Bank 0
_main_#T20450_8	EQU            	_mainDATA + 0X1		; Bank 0
_main_#T20465_8	EQU            	_mainDATA + 0X1		; Bank 0
_main_#T20508_11	EQU            	_mainDATA + 0X0		; Bank 0
_main_#T20528_11	EQU            	_mainDATA + 0X0		; Bank 0
_main_#T20532_11	EQU            	_mainDATA + 0X1		; Bank 0
#TMP	EQU            	?_TMP+ 0X5		; Bank 0
?_TMP_RET	EQU            	?_TMP		; 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
; *文件名:  wdt.c
; *作  者:  AE Team
; *版  本:  v1.0，编译于iDesigner(v4.2.3.166) + 工具链HRCC(v1.2.0.106)
; *日  期:  2020/07/08
; *描  述:  WDT复位演示
;           PB6：管脚翻转
;           配置字中使能WDTEN，初始PB6对应的LED1闪烁一段时间，然后以约0.5s闪烁一次，如果程序中不清狗，则芯片工作一段时间会复位。
;           分频比1:128,看门狗溢出时间t=256*128/32000=1.024s
; *备  注:  本软件仅供学习和演示使用，对用户直接引用代码所带来的风险或后果不承担任何法律责任。
; **********************************************************/
; #include <hic.h>
; #define CLRWDT()   {__Asm CWDT;}        //宏定义清狗指令
; typedef unsigned char uchar;
; uchar timer_cnt;        //计数器溢出次数
; /******************************************************
; 函数名：void RAMclear(void)
; 描  述：RAM区数据清零，RAM区地址0x0000~0x03FF
; 输入值：无
; 输出值：无
; 返回值：无
; *******************************************************/
; void RAMclear(void)
; {
#line 29	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     for (IAAH=0; IAAH<=0x03; IAAH++)
	CLR            	BKSR
;   29:(    ASGN_1,          0 ,            ,      IAAH)

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

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

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

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

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

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

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

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

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

; ITemplate_LABEL
#L20286
#line 33	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         IAD = 0x00;
;   33:(    ASGN_1,          0 ,            ,       IAD)

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

; ITemplate_INC_1_TMP
	INC            	_IAAH_0
#line 34	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     }
;   34:(       JMP,            ,            ,   #L20268)

; ITemplate_JMP
	GOTO           	#L20268
#line 35	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ; }
;   35:(     LABEL,    #L20345 ,            ,          )

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

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

; ITemplate_ASGN1_4_R
	MOVI           	0xff
	MOVA           	_ANSL_0
#line 47	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ; 	ANSH = 0xFF;
;   47:(    ASGN_1,        255 ,            ,      ANSH)

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

; ITemplate_CLR1_4_TMP
	CLR            	_PAT_0
#line 49	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     PBT = 0x00;
;   49:(    ASGN_1,          0 ,            ,       PBT)

; ITemplate_CLR1_4_TMP
	CLR            	_PBT_0
#line 50	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     PCT = 0x00;
;   50:(    ASGN_1,          0 ,            ,       PCT)

; ITemplate_CLR1_4_TMP
	CLR            	_PCT_0
#line 51	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     PA = 0x00;
;   51:(    ASGN_1,          0 ,            ,        PA)

; ITemplate_CLR1_4_TMP
	CLR            	_PA_0
#line 52	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     PB = 0x00;
;   52:(    ASGN_1,          0 ,            ,        PB)

; ITemplate_CLR1_4_TMP
	CLR            	_PB_0
#line 53	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     PC = 0x00;
;   53:(    ASGN_1,          0 ,            ,        PC)

; ITemplate_CLR1_4_TMP
	CLR            	_PC_0
#line 54	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ; }
;   54:(       RET,            ,            ,          )

; ITemplate_RET
	RET            			; Bank 0		; ShBank 0
	_DESC          	main,0X5,0X0,RAMclear,GPIOInit

SECTION1main	UNINTIAL       	0		; Bank 0
	ORG            	0X80		; Bank 0
_mainDATA	RSEG           	0X3		; Bank 0
main#	CSEG           
_main
; /**********************************************
; 函数名：void main(void) 
; 描  述：主函数
; 输入值：无
; 输出值：无
; 返回值：无
; **********************************************/
; void main(void) 
; {
;     uchar i;
#line 66	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     RAMclear();
	CLR            	BKSR
;   66:(      CALL, (RAMclear.0) ,            ,          )

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

; ITemplate_CALL
	SEGMENTSEL     	_GPIOInit
	CALL           	_GPIOInit		; Bank 0		; ShBank 0
	SEGMENTSEL     	$
#line 68	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     WDTC = 0x16;         //分频比1:128，使能WDT预分频器，看门狗溢出时间t=256*128/32000=1.024s
;   68:(    ASGN_1,         22 ,            ,      WDTC)

; ITemplate_ASGN1_4_R
	MOVI           	0x16
	MOVA           	_WDTC_0
; /****************T8N初始化********************/
#line 71	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     T8NC = 0x0E;         //定时器模式，预分频1:(Fosc/2)/128
;   71:(    ASGN_1,         14 ,            ,      T8NC)

; ITemplate_ASGN1_4_R
	MOVI           	0xe
	MOVA           	_T8NC_0
#line 72	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     T8NIF = 0;           //清溢出标志位
;   72:(    ASGN_0,          0 ,            ,     T8NIF)

; ITemplate_CLR_0_TMP
	BCC            	(_T8NIF_0)/8,	(_T8NIF_0)%8
#line 73	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     T8NEN = 1;           //使能T8N
;   73:(    ASGN_0,          1 ,            ,     T8NEN)

; ITemplate_SET_0_TMP
	BSS            	(_T8NEN_0)/8,	(_T8NEN_0)%8
#line 74	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     for (i=0; i<200; i++)       //上电快速翻转
;   74:(    ASGN_1,          0 ,            ,         i)

; ITemplate_CLR1_4_TMP
	SECTION        	0x1
	CLR            	(_main_i_7) & 0X7F		; Bank 1
;   74:(     LABEL,    #L20427 ,            ,          )

; ITemplate_LABEL
#L20427
;   74:(    JGE_1U,          i ,        200 ,   #L20498)

; ITemplate_JGE1_4U
	MOVI           	0xc8
	SUB            	(_main_i_7) & 0X7F,	0x0		; Bank 1
	JBC            	PSW,	0x0
	GOTO           	#L20498
;     {
#line 76	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         while (T8NIF != 1)      //等待定时器溢出
;   76:(     LABEL,    #L20443 ,            ,          )

; ITemplate_LABEL
#L20443
;   76:(    CVB_SC,      T8NIF ,            ,   #T20450)

; ITemplate_CVB_UC
	MOVI           	0x0
	JBC            	(_T8NIF_0)/8,	(_T8NIF_0)%8
	MOVI           	0x1
	MOVA           	(_main_#T20450_8) & 0X7F		; Bank 1
;   76:(    JNEQ_1,          1 ,    #T20450 ,   #L20443)

; ITemplate_JNEQ1_4
	MOV            	(_main_#T20450_8) & 0X7F,	0x0		; Bank 1
	XORI           	0x1
	JBS            	PSW,	0x2
	GOTO           	#L20443
;             ;
#line 78	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         if (i%10 == 0)
;   78:(    MOD_1U,          i ,         10 ,   #T20465)

; ITemplate_LibFunc2
	MOVI           	0xa
	SECTION        	0x0
	MOVA           	(?_TMP+0x1) & 0X7F		; Bank 0
	MOVRA          	_main_i_7		; Bank 1
	MOVA           	(?_TMP) & 0X7F		; Bank 0
	SEGMENTSEL     	BMOD
	CALL           	BMOD		; Bank 0		; ShBank 0
	SEGMENTSEL     	$
	MOV            	(?_TMP) & 0X7F,	0x0		; Bank 0
	MOVAR          	_main_#T20465_8		; Bank 1
; ITemplate_Common_Ext_U
	SECTION        	0x1
	CLR            	(_main_#T20465_8+0x1) & 0X7F		; Bank 1
;   78:(     JNZ_2,    #T20465 ,            ,   #L20455)

; ITemplate_JNZ1_4
	MOV            	(_main_#T20465_8) & 0X7F,	0x0		; Bank 1
	IOR            	(_main_#T20465_8+0x1) & 0X7F,	0x0		; Bank 1
	JBS            	PSW,	0x2
	GOTO           	#L20455
; 		{
#line 80	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ; 			CLRWDT();       //清狗
; ITemplate_LABEL
;-----------Embedded Asm--------------
	CWDT
;-------------------------------------
#line 81	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;             PB6 = ~PB6;
;   81:(    BCOM_0,        PB6 ,            ,       PB6)

; ITemplate_BCOM_0
	BTT            	(_PB6_0)/8,	(_PB6_0)%8
#line 82	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ; 		}
;   82:(     LABEL,    #L20455 ,            ,          )

; ITemplate_LABEL
#L20455
#line 83	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         T8NIF = 0;
;   83:(    ASGN_0,          0 ,            ,     T8NIF)

; ITemplate_CLR_0_TMP
	BCC            	(_T8NIF_0)/8,	(_T8NIF_0)%8
;   74:(     ADD_1,          i ,          1 ,         i)

; ITemplate_INC_1_TMP
	INC            	(_main_i_7) & 0X7F		; Bank 1
#line 84	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     }
;   84:(       JMP,            ,            ,   #L20427)

; ITemplate_JMP
	GOTO           	#L20427
#line 85	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     while(1)
;   85:(     LABEL,    #L20498 ,            ,          )

; ITemplate_LABEL
#L20498
;     {
#line 87	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         CLRWDT();       //清狗
; ITemplate_LABEL
;-----------Embedded Asm--------------
	CWDT
;-------------------------------------
#line 88	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         while (T8NIF != 1);      //等待定时器溢出
;   88:(     LABEL,    #L20501 ,            ,          )

; ITemplate_LABEL
#L20501
;   88:(    CVB_SC,      T8NIF ,            ,   #T20508)

; ITemplate_CVB_UC
	MOVI           	0x0
	JBC            	(_T8NIF_0)/8,	(_T8NIF_0)%8
	MOVI           	0x1
	MOVA           	(_main_#T20508_11) & 0X7F		; Bank 1
;   88:(    JNEQ_1,          1 ,    #T20508 ,   #L20501)

; ITemplate_JNEQ1_4
	MOV            	(_main_#T20508_11) & 0X7F,	0x0		; Bank 1
	XORI           	0x1
	JBS            	PSW,	0x2
	GOTO           	#L20501
#line 90	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         if (++timer_cnt == 125)        //约0.5s定时
;   90:(     ADD_1,  timer_cnt ,          1 ,   #T20528)

; ITemplate_ADD1_4
	MOV            	(_timer_cnt) & 0X7F,	0x0		; Bank 1
	ADDI           	0x1
	MOVA           	(_main_#T20528_11) & 0X7F		; Bank 1
;   90:(    ASGN_1,    #T20528 ,            , timer_cnt)

; ITemplate_ASGN1_4_R
	MOV            	(_main_#T20528_11) & 0X7F,	0x0		; Bank 1
	MOVA           	(_timer_cnt) & 0X7F		; Bank 1
;   90:(   CVSC_UC,    #T20528 ,            ,   #T20532)

; ITemplate_CVTMS_S
	MOV            	(_main_#T20528_11) & 0X7F,	0x0		; Bank 1
	MOVA           	(_main_#T20532_11) & 0X7F		; Bank 1
;   90:(    JNEQ_1,        125 ,    #T20532 ,   #L20513)

; ITemplate_JNEQ1_4
	MOV            	(_main_#T20532_11) & 0X7F,	0x0		; Bank 1
	XORI           	0x7d
	JBS            	PSW,	0x2
	GOTO           	#L20513
;         {
#line 92	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;             timer_cnt = 0;
;   92:(    ASGN_1,          0 ,            , timer_cnt)

; ITemplate_CLR1_4_TMP
	CLR            	(_timer_cnt) & 0X7F		; Bank 1
#line 93	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;             PB6 = ~PB6;
;   93:(    BCOM_0,        PB6 ,            ,       PB6)

; ITemplate_BCOM_0
	BTT            	(_PB6_0)/8,	(_PB6_0)%8
#line 94	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         }  
;   94:(     LABEL,    #L20513 ,            ,          )

; ITemplate_LABEL
#L20513
#line 95	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;         T8NIF = 0;     
;   95:(    ASGN_0,          0 ,            ,     T8NIF)

; ITemplate_CLR_0_TMP
	BCC            	(_T8NIF_0)/8,	(_T8NIF_0)%8
#line 96	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\WDT\wdt\wdt.c ;     }
;   96:(       JMP,            ,            ,   #L20498)

; ITemplate_JMP
	GOTO           	#L20498

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_WDT_wdt_wdt_c_STATIC0	PSECT	FLAG=0X1088,ADDR=0X7FCD1
_T8NIF_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_WDT_wdt_wdt_c_STATIC1	PSECT	FLAG=0X1088,ADDR=0X7FD4E
_PB6_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_WDT_wdt_wdt_c_STATIC2	PSECT	FLAG=0X1088,ADDR=0X7FDF7
_T8NEN_0	RSEG           	0X1		; Bank 0

SECTION1C__Users_lisq_Desktop_AN135_Examples_ES7P169C_WDT_wdt_wdt_c_STATIC	UNINTIAL       	0		; Bank 0
	ORG            	0X83		; Bank 0
_timer_cnt	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            	0XFFA4		; Bank 0
_WDTC_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            	0XFFBE		; Bank 0
_T8NC_0	RSEG           	0X1		; Bank 0
	END
