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

📄 ch10_t3.asm

📁 51单片机基础篇 对于有一定基础的人看看 包含书中所以的源代码
💻 ASM
字号:
     ;PROGRAM NAME IOTEST3.ASM
     ;本程序请最好烧录成ROM后再做测试
     ;
     BUFFER		EQU	8200H
     T0COUNT	        EQU	922		        ;1ms IN XTAL=11.0592MHz
     ;
          		ORG	0000H
          		LJMP	START			;主程序进入点
     ;
          		ORG	000BH
          		LJMP	TF0ISR			;TIMER0溢位中断进入点
     ;
     START		MOV	SP,#60H
              		LCALL	DELAY
     ;
          		LCALL	INIT_8255		;8255输入/输出初始设置
          		LCALL	INIT_TIMER		;定时器设置
          		LCALL	ENABLE_INT		;系统中断允许设置
          		LCALL	COUNT_CLEAR		;近接开关用定时器归零
     ;MAINLOOP主循环其实还可以做很多其他事情
     $1			MOV	DPTR,#PPICTL1	        ;主循环让在PC0的LED一下子亮一下子灭
          		MOV	A,#00H		        ;本指令送到8255时可使PC0=0
          		MOVX	@DPTR,A
          		LCALL	DELAY
          		LCALL	DELAY
          		LCALL	DELAY
          		MOV	DPTR,#PPICTL1
          		MOV	A,#01H		        ;本指令送到8255时可使PC0=1
          		MOVX	@DPTR,A
          		LCALL	DELAY
          		LCALL	DELAY
          		LCALL	DELAY
          		SJMP	$1			;等待中断
     ;
     ;ISR中断服务程序由此开始,程序首先重新设置THO与TL0计数值
     TF0ISR
          		MOV	TH0,#(65536-T0COUNT)/256;COUNT RELOAD
          		MOV	TL0,#(65536-T0COUNT).MOD.256;COUNT RELOAD
          		PUSH	PSW			;重要寄存器事先存入堆栈中
          		PUSH	A
          		PUSH	DPL
          		PUSH	DPH
          		LCALL	IO_TEST			;调用近接开关检查程序
          		POP	DPH		        ;取回原先存入的寄存器值
          		POP	DPL
          		POP	A
          		POP	PSW
          		PETI				;ISP结束回原中断点
     ;
     IO_TEST
          		MOV	DPTR,#PPIPC2
          		MOVX	A,@DPTR
          		JB	ACC.4,NO_SENSOR
          		MOV	A,#0FH		        ;SET PC7=1
          		MOV	DPTR,#PPICTL1
          		MOVX	@DPTR,A
          		LCALL	COUNT_INC
          		SJMP	NEXT
     NO_SENSOR
          		MOV	A,#0EH		        ;RESET PC7=0
          		MOV	DPTR,#PPICTL1
          		MOVX	@DPTR,A
          		LCALL	COUNT_CLEAR
     NEXT		RET
     ;

⌨️ 快捷键说明

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