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

📄 ex7-5a.asm

📁 《增强型8051单片机实用开发技术》例程代码
💻 ASM
字号:
$INCLUDE (STC12C5A.inc)  ;包含STC12C5A60S2寄存器定义文件
COUNTER  EQU 30H      ;声明一个计数器,用来计数中断的次数
LED_1s   EQU P1.6
  		ORG   0000H
   		LJMP  MAIN  		  ;转主程序
		ORG   003BH		  ;PCA中断入口地址
		LJMP  PCA_ISR
		ORG   0050H
MAIN:	MOV   SP, #70H 
		MOV   COUNTER, #200       ;设置COUNTER计数器初值
		;初始化PCA模块
		MOV   CMOD, #10000000B     ;空闲模式下停止PCA计数器工作
		                  		   ;选择PCA的时钟源为fOSC/12,禁止PCA计数器溢出时中断
		MOV   CCON, #00H           ;清0 PCA计数器溢出中断请求标志位CF
		                           ;CR = 0, 不允许 PCA 计数器计数
		                           ;清0 PCA 各模块中断请求标志位CCFn
		MOV   CL, #00H             ;清0 PCA 计数器 
		MOV   CH, #00H
		MOV   CCAP0L, #00H    	  ;给PCA模块0的CCAP0L置初值
		MOV   CCAP0H, #1EH        ;给PCA模块0的CCAP0H 置初值
		MOV   CCAPM0, #49H        ;设置PCA模块0为16位软件定时器
		;ECCF0=1允许PCA模块0中断
		;当[CH,CL]=[CCAP0H,CCAP0L]时,产生中断请求,CCF0=1,请求中断
		SETB  EA                    ;开整个单片机所有中断共享的总中断控制位
		SETB  CR                    ;启动PCA计数器(CH,CL)计数
		SJMP   $                    ;循环等待中断 
		;PCA中断服务程序
PCA_ISR: 
		PUSH   ACC					;保护现场
		PUSH   PSW
		;每5mS中断一次
		MOV    A, #00H      		;给[CCAP0H,CCAP0L]增加一个数值
		ADD    A, CCAP0L
		MOV    CCAP0L, A 
		MOV    A, #1EH
		ADDC   A, CCAP0H
		MOV    CCAP0H, A
		CLR    CCF0                  ;清 PCA 模块0 中断标志
		DJNZ   COUNTER,PCA_EXIT	 ;中断计数没有减到0,直接退出
		MOV	   COUNTER,#200		 ;恢复中断计数初值
		CPL    LED_1s                ;LED_1S输出脉冲宽度为1秒钟的方

⌨️ 快捷键说明

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