8 STC15F2K60S2单片机的定时器计数器 例题
单片微机原理与接口技术(第2版)-基于STC15系列单片机(习题部分与答案)(3)

单片微机原理与接口技术-基于STC15系列单片机(第2版)习题部分第1章一、填空题1. 125= 01111101B= 7d H=( 0001 0010 0101)8421BCD码=(0110001 0110010 0110101)ASCII码。
2. 微型计算机由CPU、存储器、I/O 接口以及连接他们的总线组成。
3. 微型计算机的CPU是通过地址总线、数据总线、控制总线与外围电路进行连接与访问的,其中,地址总线用于CPU寻址,地址总线的数据量决定CPU的最大寻址能力;数据总线用于CPU与外围器件爱存储器、I/O接口)交换数据,数据总线的数量决定CPU一次交换数据能力;控制总线用于确定CPU与外围器件的交换数据的类型。
4. I/O 接口的作用是CPU与输入/输出设备的连接桥梁,相当于一个数据转换器。
5. 按存储性质分,微型计算机存储器分为_ _程序存储器______和数据存储器两种类型。
6. 16位CPU是指数据总线的位数为16位。
7 若CPU地址总线的位数为16,那么CPU的最大寻址能力为64K 。
8. 微型计算机执行指令的顺序是按照在程序存储中的存放顺序执行的。
在执行指令时包含取指、指令译码、执行指令三个工作过程。
9. 微型计算机系统由微型计算机和输入/输出设备组成。
10. 微型计算机软件的编程语言包括高级语言、汇编语言和机器语言三种类型。
二、选择题1.当CPU的数据总线位数为8位时,标志着CPU一次交换数据能力为D。
A. 1位B. 4 位C. 16位D. 8位2. 当CPU地址总线为8位时,标志着CPU的最大寻址能力为 C 。
A. 8个空间B. 16个空间C. 256个空间D. 64K个空间3. 微型计算机程序存储器空间一般由 A 构成。
A. 只读存储器B. 随机存取存储器4. 微型计算机数据存储器空间一般由 B 构成。
A. 只读存储器B. 随机存取存储器三、判断题1. 键盘是微型计算机的基本组成部分。
8 STC15F2K60S2单片机的定时器计数器 例题

第8章STC15F2K60S2单片机的定时/计数器例题例8.1用T1方式0实现定时,在P1.0引脚输出周期为10mS的方波。
解:根据题意,采用T1方式1进行定时,因此,(TMOD)=00H。
因为方波周期是10mS,因此T1的定时时间应为5mS,每5mS时间到就对P1.0取反,就可实现在P1.0引脚输出周期为10mS的方波。
系统采用12M晶振,分频系数为12,即定时脉钟周期为1μS,则T1的初值为:X = M -计数值= 65536 - 5000 = = 60536 =EC78H即:TH1 = ECH,TL1 = 78H。
(1)查询方式实现:ORG 0000HMOV TMOD,#00H ;设T1为方式1定时模式MOV TH1,#0ECH ;置5mS定时的初值MOV TL1,#78HSETB TR1 ;启动T1Check_TF1:JBC TF1,Timer1_Overflow ;查询计数溢出SJMP Check_TF1 ;未到5mS继续计数Timer1_Overflow:CPL P1.0 ;对P1.0取反输出SJMP Check_TF1 ;未到1s继续循环END(2)中断方式实现:ORG 0000HLJMP MAIN ;上电复位后,转MAINORG 001BHLJMP Timer1_ISR ;T1中断响应后,转Timer1_ISRORG 0100HMAIN:MOV TMOD,#00H ;设T1为方式1定时模式MOV TH1,#0ECH ;置5mS定时的初值MOV TL1,#78HSETB ET1154SETB EA ;开放中断SETB TR1 ;启动T1SJMP $ ;原地踏步,模拟主程序Timer1_ISR:CPL P1.0 ;对P1.0取反输出RETI ;中断返回,回到主程序执行SJMP $END155例8.2 用定时/计数器扩展外部中断。
解:当实际应用系统中有两个以上的外部中断源,而片内定时/计数器未使用时,可利用定时/计数器来扩展外部中断源。
STC15F2K60S2单片机定时器编程

STC15F2K60S2单片机定时器编程一、STC15F2K60S2 单片机定时器概述STC15F2K60S2 单片机内部集成了 5 个定时器,分别是 2 个 16 位的定时器/计数器 T0 和 T1,2 个 8 位的定时器 T2 和 T3,以及 1 个独立波特率发生器定时器T4。
这些定时器都具有不同的特点和应用场景。
T0 和 T1 是传统的 16 位定时器/计数器,可以工作在定时模式和计数模式。
在定时模式下,通过设置定时器的初值和溢出周期,可以实现精确的定时功能;在计数模式下,可以对外部脉冲进行计数。
T2 和 T3 是 8 位定时器,具有自动重载功能,使用起来更加方便。
T4 是独立波特率发生器定时器,主要用于串行通信中的波特率设置。
二、定时器的工作模式1、定时模式在定时模式下,定时器对内部的系统时钟进行计数。
通过设置定时器的初值和溢出周期,可以实现不同时长的定时功能。
例如,如果系统时钟频率为 12MHz,要实现 1ms 的定时,我们可以计算出定时器的初值为 65536 1000,然后将初值写入定时器的寄存器中。
2、计数模式在计数模式下,定时器对外部引脚输入的脉冲进行计数。
当计数值达到设定的阈值时,产生溢出中断。
三、定时器的相关寄存器1、定时器控制寄存器(TCON)TCON 寄存器用于控制定时器的启动、停止、溢出标志等。
例如,TR0 和 TR1 位分别用于控制 T0 和 T1 的启动和停止,TF0 和 TF1 位则分别表示 T0 和 T1 的溢出标志。
2、定时器模式寄存器(TMOD)TMOD 寄存器用于设置定时器的工作模式和计数方式。
例如,可以通过设置 TMOD 寄存器的某些位来选择定时器是工作在定时模式还是计数模式,以及是 8 位模式还是 16 位模式。
3、定时器初值寄存器(TH0、TL0、TH1、TL1、TH2、TL2、TH3、TL3)这些寄存器用于存储定时器的初值。
在定时模式下,通过设置初值可以控制定时器的溢出周期;在计数模式下,初值则决定了计数的阈值。
5 STC15F2K60S2单片机的程序设计 例题

MOV A, @R0
;取被传送数据
MOVX @DPTR, A
INC R0
;指向下一个被传送地址
INC DPTR
;指向下一个传送目标地址
CJNE A, #24H, LOOP0 ;判断是否为“$”字符(ASCII 码为 24H),若不是继续
SJMP $
;是“$”字符,停止传送
END
94
例 5.10 编程将扩展 RAM1000H 为起始地址的 16 个数据传送到片内基本 RAM20H 为起 始地址的单元中。
LCALL DELAY
;调用起始地址为 2200H 的子程序
END
解:经 EQU 定义后,AA 等效于 R1,DATA1 等效于 10H,DELAY 等效于 2200H,该程
序在汇编时,自动将程序中 AA 换成 R1、DATA1 换成 10H、DELAY 换成 2200H,再汇编为
机器代码程序。
使用赋值伪指令 EQU 的好处在于程序占用的资源数据符号或寄存器符号用占用源的英
2
1/6μs
DELAY2:
NOP
1
NOP
1
DJNZ R2,DELAY2
4
1/12μs 1/12μs 1/3μs
外
内
循
循
环
环
DJNZ R1,DELAY1
4
1/3μs
RET
4
1/3μs
96
例 5.12 编程实现 C=a2+b2。设 a、b 均小于 10 且分别存于扩展 RAM 的 1000H、1001H 单元,要求运算结果 C 存于外部 RAM1002H 单元。
JMP @A+DPTR
;转到分支表该分支的对应入口处
STC15F2K60S2单片机中断系统 例题

ORG 0100H MAIN:
MOV SP,#60H SETB IT0 SETB EX0 SETB EA LOOP: MOV A, P1 ANL A,#15H JNZ Trouble CLR P1.7 SJMP LOOP Trouble: SETB P1.7
;设定堆栈区域 ;设定外部中断 0 为下降沿触发方式 ;开放外部中断 0 ;开放总中断
void int0_isr( ) interrupt 0
{
Pl = i;
i <<= 1 ; if(i==0) i = 0xfe;
//移位 8 次后,i 将变为 0,需要重新赋值
} /*------------------------ 主函数------------------------*/
139
void main(void) {
汇编语言参考程序如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0_ISR
ORG 0l00H
MAIN:
MOV A,#0FEH ;设置 LED 灯起始驱动信号
SETB IT0
;设置外部中断 0 为下降沿触发方式
SETB EX0
;开放外部中断 0
SETB EA
;开放总中断
SJMP $
;读取 P1 口中断输入信号 ;截取中断输入信号 ;有中断请求,转 Trouble,熄灭正常工作指示灯 LED3 ;无中断请求,点亮 LED3 ;循环检查与判断
;熄灭 LED3
141
SJMP LOOP
;循环检查与判断
INT0_ISR:
JNB P1.0,No_Trouble_0 ;查询 0 号故障源,无故障转 No_Trouble_0,熄灭 LED0
第6章STC15F2K60S2单片机定时器及可编程时钟输出《单片机原理及应用》

第6章STC15F2K60S2单片机定时器及可编程时钟输出《单片机原理及应用》本文介绍了STC15F2K60S2单片机的定时器和可编程时钟输出功能。
单片机定时器是单片机中常用的功能模块之一,可以用于定时、计时、延时等应用。
STC15F2K60S2单片机具有多个定时器,包括定时/计时器的选择,工作模式的设置,定时器中断的配置等。
另外,该单片机还具备可编程时钟输出功能,可以用于生成各种频率的时钟信号。
一、STC15F2K60S2单片机定时器概述STC15F2K60S2是一款杰出的8051内核单片机,它具有多种功能和丰富的接口资源,适用于各种应用场景。
定时器是其中一个重要的功能模块,可以用于实现各种定时任务,例如周期性的数据采集、定时触发等。
STC15F2K60S2单片机具有4个定时器,分别为T0、T1、T2和T3。
每个定时器又分为两个独立的计时/定时模块,通常称之为T0高速定时器和T0低速定时器等。
这些定时器的工作频率由系统时钟频率决定,可以通过定时器控制寄存器来设置时钟来源和分频系数。
二、STC15F2K60S2单片机定时器的工作模式定时器有多种工作模式可供选择,常用的有定时器模式和计数器模式。
定时器模式主要用于实现定时功能,可以根据需求设置定时时长和触发条件。
计数器模式主要用于计数功能,可以将外部事件转换为内部计数脉冲,用于测量时间间隔或者脉冲频率。
STC15F2K60S2单片机定时器的工作模式可以通过相关的寄存器位进行配置。
例如,可以通过T2CON寄存器的T2M0和T2M1位来选择定时器2的工作模式,可以选择定时器模式、16位自动重载模式、13位同步计数器模式,或者外部事件计数器模式。
三、STC15F2K60S2单片机定时器中断的配置定时器中断是使用定时器功能的常用方法之一,可以在定时达到设定值时触发中断,执行相应的中断服务程序。
STC15F2K60S2单片机的定时器可以设置使能定时器中断,并通过相关的中断使能寄存器来控制定时器中断的使能和优先级。
STC15F2K60S2系列单片机 定时器
CLKOUT2
若T0工作在方式2定时状态,则 (T0x12)=0时,CLKOUT0=(fSYS/12)/(256-TH0])/2; (T0x12)=1时,CLKOUT0=fSYS/(256-TH0)/2。 若T0工作在方式0计数状态,则 CLKOUT0=(T0_PIN_CLK)/(65536-[RL_TH0,RL_TL0])/2。 注:T0_PIN_CLK为定时/计数器T0的计数输入引脚T0输入脉冲的频 率。
单片微机原理与接口技术
返回目录
电子工业出版社
8.3 STC15F2K60S2单片机定时/计数器(T0/T1) 的工作方式
例8.1 例8.2 方式1、方式2、方式3的工作原理与方式0基本一致,方式0能够 实现方式1、方式2、方式3 的功能。
单片微机原理与接口技术
返回目录
电子工业出版社
8.4 STC15F2K60S2单片机定时/计数器(T0/T1) 的应用举例
T2_
地址 T2H T2L AUXR INT_C LKO IE2 D6H D7H 8EH 8FH AFH
B7
B6
B5
B4
B3
B2
B1
B0
复位值 0000.000 0 0000.000 0
T2的高8位 T2的低8位 T0x12 T1x12 EX4 UART_M0x 6 EX3 T2R EX2 LVD_WA KE T2x12 T2CL KO ET2 EXTRA M T1CLKO ESPI S1BR S T0CL KO ES2
CLKOUT2
2. 可编程时钟输出频率的计算 可编程时钟输出频率为定时/计数器溢出率的二分频信号。 如允许T0输出时钟,T0工作在方式0定时状态,则 P3.5输出时钟频率(CLKOUT0)=(1/2)T0溢出率。 (T0x12)=0时, CLKOUT0=(fSYS/12)/(65536- [RL_TH0,RL_TL0])/2;
STC15F2K60S2单片机基本结构与系统典型构成
单片机产品
8051内核是Intel 8051系列单片机的基本标准,许多参 考书上将这种单片机称为MCS-51系列单片机。
MCS-51 系 列 单 片 机 的 典 型 产 品 为 8051 , 它 有 4K×8ROM,128字节RAM,2个16位定时/计数器,4 个8位I/O口,一个串行口。
二十世纪80年代,Intel将8051内核转让或出售给几家 著名的IC厂商,如Philips,Atmel等。这样,8051单片 机就变成众多制造厂家支持的,发展成为上百个产品 的大家族。
STC15F2K60S2单片Fra bibliotek机的基本结构和系
统的典型构成
本章学习目标 掌握STC15F2K60S2单片机的基本结构 掌握单片机I/O口的使用 掌握单片机应用系统的典型构成
2
§3.1 STC15F2K60S2单片机的基本结构
一、单片机的内部结构
单片微型计算机(简称单片机)在一片芯片 上集成了前述微型计算机的功能结构,有 些单片机不仅集成了CPU、存储程序和数 据的存储器、I/O接口、定时/计数器等常规 资源,而且还集成了工业测控系统中常用 的模拟量模块。
AC(PSW.6):辅助进位标志位 当执行加/减法指令时,如果低四位数向高 四位数产生进/借位,则AC置“1”,否则清 零。
12
位号 D7 D6 D5 D4 D3 D2 D1 D0 符号 CY AC F0 RS1 RS0 OV F1 P
F0(PSW.5):用户标志0。 该位是由用户定义的一个状态标志。可以用软件 来使它置“1”或清“0”,也可以由软件测试F0控制 程序的流向。 F1(PSW.1):用户标志1。 该位是由用户定义的一个状态标志。与F0类似, 可以用软件来使它置“1”或清“0”,也可以由软件 测试F1控制程序的流向。
STC15F2K60S2系列单片机的PCA与PWM 例题
;定义一个计数器,用来计数模块 0 5mS 中断的次数
ORG 0000H
LJMP MAIN
ORG 003BH
LJMP PCA_interrupt
MAIN:
ORG 0050H CLR LED_MCU_START MOV SP, #7FH MOV Counter,#0 LCALL PCA_Initiate
;设置 PCA 模块 0 为 16 位软件定时器
;开放 PCA 模块 0 中断
EA
;开放总中断
CR
;启动 PCA 计数器(CH,CL)计数
RET
PCA_interrupt∶ PUSH ACC PUSH PSW CPL LED_5mS_Flashing
4
;5mS 中断一次, 每次进中断将该灯状态取反
MOV A,#Channe0_5mS_L ;给[CCAP0H,CCAP0L]增加 5mS 所需计数值
;禁止 PCA 计数器溢出中断
CL,#00H
;设置 PCA 定时器计数的初始值
CH,#00H
CCAP0L,#Channe0_5mS_L ;给 PCA 模块 0 的 CCAP0L 赋定时初值
CCAP0H,#Channe0_5mS_H ;给 PCA 模块 0 的 CCAP0L 赋定时初值
CCAPM0,#49H
ADD A,CCAP0L
MOV CCAP0L,A
MOV A,#Channe0_5mS_H
ADDC A,CCAP0H
MOV CCAP0H, A
CLR CCF0
;清 0PCA 模块 0 的中断请求标志
INC Counter
;中断次数计数器+1
MOV A,Counter
CLR C
关于STC15F2K60S2的AD应用
Mnemonic Add
Name
B7
B6 B5 B4 B3 B2
B1
B0
ADC_RE S
A/D 转换结 BDh 果寄存器
高
ADC_RE S
A/D 转换结 BDh 果寄存器
低
CLK_DIV 97H
时钟分频 寄存器
MCKO_ MCK S1 O_S0
ADRJ
Tx_R x
TX2_ Rx2
CLKS2
CLKS1
CLKS0
2.4.A/D 转换结果寄存器 ADC_RES、ADC_RESL
特殊功能寄存器 ADC_RES 和 ADC_RESL 寄存器用于保存 A/D 转换结果,其格式如下: AUXRI 寄存器的 ADRJ 位是 A/D 转换结果寄存器(ADC_RES、ADC_RESL)的数据 格式调整控制位。
当 ADRJ = 0 时,10 位 A/D 转换结果的高 8 位存放在 ADC_RES 中,低 2 位存放在 ADC_RESL 的低 2 位中。
2.与 A/D 转换相关的寄存器
与 STC15 系列单片机 A/D 转换相关的寄存器列于下表所示。
符号
描述
地址 MSB
位地址及其符号
复位值 LSB
P1AS F
P1 Analog Function Configure register
9DH
P17ASF
P16AS F
P15AS F
P14 AS F
P13 AS F
3.A/D 转换器的结构
4.程序 /****************************************************/ //利用 STC12C5A60S2AD 转换,实现温度计 //函数名:main.c /****************************************************/ #include<reg51.h> #include"10bit_adc.c" #define uchar unsigned char /*宏定义用 uchar 代替 unsigned char*/ #define uint unsigned int /*宏定义用 uint 代替 unsigned int*/
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SJMPCheck_TF1;未到5mS继续计数
Timer1_Overflow:
CPL P1.0;对P1.0取反输出
SJMP Check_TF1;未到1s继续循环
END
(2)中断方式实现:
ORG0000H
LJMPMAIN;上电复位后,转MAIN
AJMP Check_TF1
END
2)中断方式实现
ORG0000H
AJMPMAIN
ORG001BH
AJMPTimer1_ISR
MAIN:
MOV TMOD, #60H;设定定时器1模式2,计数功能
MOV TH1, #0FBH
MOV TL1, #0FBH;设置计数器初值(256-5)
SETB ET1
SETB EA
SETB TR1;启动计数
SJMP $
Timer1_ISR:
CPL P1.0;当统计5个脉冲,LED灯状态翻转
RETI
END
C51参考程序如下:
1)查询方式实现
#include<reg51.h>
sbit led = P1^0;
void timer_initial(void)
{
TMOD = 0x60;//设定定时器1模式2,计数功能
{
LED = _cror_(LED,1);//循环右移一位
}
else {t = 0;}
}
/*--------------------T1中断服务子函数------------------*/
void Timer1_int(void) interrupt 3 using 1//定时T1中断服务程序
{
i++;
ORG001BH
LJMPTimer1_ISR;T1中断响应后,转Timer1_ISR
ORG0100H
MAIN:
MOV TMOD,#00H;设T1为方式0定时模式
MOV TH1,#0ECH;置5mS定时的初值
MOV TL1,#78H
SETB ET1
SETB EA;开放中断
SETB TR1;启动T1
SJMP $;原地踏步,模拟主程序
第8章STC
例题
例8.1用T1方式0实现定时,在P1.0引脚输出周期为10mS的方波。
解:根据题意,采用T1方式0进行定时,因此,(TMOD)=00H。
因为方波周期是10mS,因此T1的定时时间应为5mS,每5mS时间到就对P1.0取反,就可实现在P1.0引脚输出周期为10mS的方波。系统采用12M晶振,分频系数为12,即定时脉钟周期为1μS,则T1的初值为:
MOV R3, #20
JB 00H, Right_Shift;判断左、右移控制
RL A;左移控制
MOV P1, A
DJNZR2,Exit_Timer1_ISR;判断左移流程是否结束,若结束,转入右移控制
SETB 00H;置位左、右移控制标志
MOV R2, #07H;重新设置移位次数
SJMP Exit_Timer1_ISR
{
Right_Shift ();
}
}
}
2)中断方式实现
#include <REG52.H>//包含52标准文件头
#include <intrins.h> //包含循环左移、右移子函数
#define uchar unsigned char
#define uint unsigned char
/*---------------------定义全局变量------------------*/
Right_Shift:
RR A;右移控制
MOV P1, A
DJNZ R2,Exit_Timer1_ISR;判断左移流程是否结束,若结束,转入右移控制
CLR 00H;清0左、右移控制标志
MOV R2, #07H;重新设置移位次数
Exit_Timer1_ISR:
RETI
END
C51参考程序如下:
1)查询方式实现
DJNZ R2,Right_Shift;判断左移流程是否结束,若结束,又重新开始
SJMP LOOP
DELAY:
MOV R3,#20;置50ms计数循环初值
MOV TMOD,#00H;设定时器1为方式1
MOV TH1,#3CH;置定时器初值
MOV TL1,#0B0H
SETB TR1;启动T1
Check_TF1:
void Left_Shift(void)
{
P1 = LED;
DELAY();//延时一秒
LED = _crol_(LED,1);//循环左移一位
}
/*---------------------循环右移子函数------------------*/
void Right_Shift(void)
{
LED = _cror_(LED,1);//循环右移一位
JBC TF1,Timer1_Overflow;查询计数溢出
SJMP Check_TF1;未到50ms继续计数
Timer1_Overflow:
DJNZ R3,Check_TF1;未到1s继续循环
CLR TR1;关闭T1
RET;返回主程序
END
2)中断方式实现
ORG0000H
LJMPMAIN
ORG001BH
void DELAY(void)//延时函数1S
{
uint i = 0;
TMOD = 0x00;//T1工作模式1
TH1 = 0x3c;
TL1 = 0xb0;
TR1 = 1;Biblioteka while(i<20)
{
if(TF1==1)//查询T1溢出标志
{
TF1 = 0;
i++;
}
}
}
/*---------------------循环左移子函数------------------*/
TH1 = 0xfb;//5个脉冲以后溢出
TL1 = 0xfb;
TR1 = 1;//开始计数器
}
void main(void)
{
timer_initial();
while(1)
{
while(TF1==0);
TF1 = 0;
Led = ~led;//不断查询是否溢出,没有溢出,就等待溢出了;溢出了,
//清空溢出标志,led取反
P1 = LED;
DELAY();//延时一秒
}
/*---------------------主函数------------------*/
void main(void)
{
uchar j;
while(1)
{
for(j=0;j<7;j++)
{
Left_Shif ();
}
for(j=0;j<7;j++)
uchar LED = 0xfe;
uchar i = 0;
uchar t = 0;
/*---------------------T1初始化子函数------------------*/
void Timer1_init(void)
{
TMOD = 0x00;//T1工作模式1
TH1 = 0x3c;
TL1 = 0xb0;
f(i==20)
{
i = 0;
Shift ();
}
}
/*--------------------主函数------------------*/
void main(void)//主函数
{
Timer1_init();//T1初始化
while(1) ;
}
例8.4连续输入5个单次脉冲使单片机控制的LED灯状态翻转一次。要求用单片机定时/计数器计数功能实现实现。
X = M计数值= 655365000 = = 60536 =EC78H
即:TH1 = ECH,TL1 = 78H。
(1)查询方式实现:
ORG 0000H
MOVTMOD,#00H;设T1为方式0定时模式
MOVTH1,#0ECH;置5mS定时的初值
MOVTL1,#78H
SETBTR1;启动T1
Check_TF1:
例8.3使信号灯循环点亮,首先按从左至右轮流点亮,再按从右至左轮流点亮,每个信号灯点亮的时间间隔为1秒。要求用单片机定时/计数器定时实现。
解:硬件电路比较简单,采用P1口输出驱动电平,低电平有效。电路如图8.7所示。
图8.7流水灯显示电路
系统采用12M晶振,分频系数为12,即定时时钟周期为1μS;采用定时器T1方式0定时50mS,用R3做50ms计数单元,20次50mS定时即为1S,故R3的初始值为20。
Timer1_ISR:
CPL P1.0;对P1.0取反输出
RETI;中断返回,回到主程序执行SJMP $
END
例8.2用定时/计数器扩展外部中断。
解:当实际应用系统中有两个以上的外部中断源,而片内定时/计数器未使用时,可利用定时/计数器来扩展外部中断源。扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加1后便产生定时/计数器溢出中断。因此,可把定时/计数器的外部计数引脚作为扩展中断源的中断输入端。
DJNZ R2,Left_Shift;判断左移流程是否结束,若结束,转入右移控制
MOV A,#7FH;设置信号灯的显示(右移)的起始状态值,可省略
MOV R2,#07H;设置右移的次数