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

📄 main.asm

📁 周立功单片机上的源程序
💻 ASM
字号:
;*************************************************************************
;	main.ASM
;	CAT1021看门狗实验程序
;*************************************************************************


;*************************************************************************
;定义I/O接口
;*************************************************************************
LED	BIT	P0.0
SCL	BIT	P3.4
SDA	BIT	P3.5


;*************************************************************************
;复位入口
;*************************************************************************
	ORG	0x0000
	LJMP	PreMain


;*************************************************************************
;程序段:PreMain
;功能:进入主程序之前的初始化操作
;*************************************************************************
PreMain:
	MOV	SP, #0x2F
	LJMP	main


;*************************************************************************
;宏定义:DJNZ_W
;功能:双字节数自减1,结果不为0跳转
;参数:
;	(xh,xl):要操作的数
;	Label:跳转目标
;*************************************************************************
DJNZ_W	MACRO	xh,xl, Label
LOCAL	next
	MOV	A, xl
	JNZ	next
	DEC	xh
next:
	DEC	xl
	MOV	A, xh
	ORL	A, xl
	JNZ	Label
	ENDM


;*************************************************************************
;函数:Delay()
;功能:延时0.001~65.536s
;参数:
;	t>0时,延时(t*0.001)s
;	t=0时,延时65.536s
;*************************************************************************
; void Delay(unsigned int t)
; t = (R6,R7)
Delay:
	MOV	TH0, #0xFC
	MOV	TL0, #0x66
	SETB	TR0
	JNB	TF0, $
	CLR	TR0
	CLR	TF0
	DJNZ_W	R6,R7, Delay
	RET


;*************************************************************************
;函数:Feed()
;功能:清除CAT1021内部WDT定时器(喂狗)
;说明:如果没有在1.6秒(典型值)内喂狗,则CAT1021会输出复位信号
;*************************************************************************
; void Feed()
Feed:
	PUSH	0x06
	PUSH	0x07
	CLR	SDA
	MOV	R6, #0
	MOV	R7, #1
	LCALL	Delay
	SETB	SDA
	POP	0x07
	POP	0x06
	RET


;*************************************************************************
;函数:SysInit()
;功能:系统初始化
;*************************************************************************
; void SysInit()
SysInit:
	CLR	LED	;点亮LED。如果CPU被看门狗复位,则能看到LED闪亮
	SETB	SCL
	SETB	SDA
	ANL	TMOD, #0xF0
	ORL	TMOD, #0x01
	MOV	R6, #0
	MOV	R7, #250
	LCALL	Delay	;上电后必须先延时200ms以上才能对CAT1021进行操作
	RET


;*************************************************************************
;函数:void main()
;功能:主函数
;*************************************************************************
main:
	LCALL	SysInit
Loop:
;	喂狗
	LCALL	Feed
;	延时
	MOV	R6, #HIGH(800)
	MOV	R7, #LOW(800)
	LCALL	Delay
;
	SJMP	Loop


;*************************************************************************
;程序结束
;*************************************************************************
	END

⌨️ 快捷键说明

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