合泰单片机中断嵌套

发布者:快乐行者最新更新时间:2015-05-13 来源: 51hei关键字:合泰  单片机  中断嵌套 手机看文章 扫描二维码
随时随地手机看文章
;;内容:按下PA3接的按键进中断LED数码管加1

;数码管段码接法A-PD0,B-PD1....G-PD6,H-PD7
;数码管位码接法OM0-PC0...COM4-PC3
;源码下载: http://www.51hei.com/f/htzdqt.rar
;1.开中断
;2.中断中防抖
;3.查表
;4.间接寻址
;5.定时器的使用
;中断嵌套处理
include HT66F50.inc
ORG 0000H
JMP A1
ORG 04H ;外部中断0入口地址
JMP ZD01 ; 
ORG 0014H ;多功能中断入口地址
JMP ZD1
ORG 30H ;
Q1:
DC 03FH ; 0
DC 006H ; 1
DC 05BH ; 2
DC 04FH ; 3
DC 066H ; 4
DC 06DH ; 5
DC 07DH ; 6
DC 007H ; 7
DC 07FH ; 8
DC 06FH ; 9
DC 077H ; A
DC 07CH ; B
DC 039H ; C
DC 05EH ; D
DC 079H ; E
DC 071H ; F 
A1: 

MOV A,0 ;显示内容
MOV [8AH],A ;第一位数码管段码显示内容寄存器
MOV A,0 ;显示内容
MOV [8BH],A ;第二位数码管段码显示内容寄存器
MOV A,0 ;显示内容
MOV [8CH],A ;第三位数码管段码显示内容寄存器
MOV A,0 ;显示内容
MOV [8DH],A ;第四位数码管显示内容寄存器 
MOV A,08H ;跟CP1C寄存器设置要求选择数据
MOV CP1C,A ;设置PC口为I/0口而不是中断口
CLR PCC ;设置pc 口为输出口
CLR PDC ;设置PD 口为输出口
MOV A,1 ;设置初始显示位码显示第一位
MOV [80H],A ;位码寄存器
MOV A,8AH ;设置对应第一位段码寄存器
MOV MP0,A ;间接寄存器指针
MOV A,00000000B ;
MOV PRM1,A ;设置外部中断0的管脚为PA.3
MOV A,00000010B ;
MOV INTEG,A ;设置外部中断0为下降沿触发
CLR ACERL ;设置PA口不为AD输入口
SET PAPU.3 ;设置PA.3上拉
SET PAC.3 ;设置PA.3为输入口
MOV A,08H ; 
MOV CP0C,A ;设置PA3不为比较器输入口
CLR PDC ;设置PD口为输出口
MOV A,01H ;设置PD口初始状态
MOV PD,A ;PD口显示初始状态
MOV A,00000000B ;设置TM2 计数时钟位为fSYS/4
MOV TM2C0,A
MOV A,11000001B ;设置TM2中断为定时/计数模式选择比较器A匹配
MOV TM2C1,A
MOV A,LOW  5000 ;设置中断时间为5000个时钟周期
MOV TM2AL,A ;低8位
MOV A,HIGH 5000 ;设置中断时间为5000个时钟周期
MOV TM2AH,A ;高8位
CLR MF0F ;清多功能中断0标志
CLR T2AF ;清定时器2较器A中断标志
SET MF0E ;使能多功能0中断
SET T2AE ;使能定时器2较器A中断
CLR INT0F ;清中断0标志
SET INT0E ;使能外部0中断
SET EMI ;使能总中断
SET T2ON ;开始计数
JMP $[page]
;*************************************************
; 外部中断0服务子程序
;************************************************* 
ZD01: ;进入中断自动关闭总中断
SET EMI ;打开总中断允许嵌套
CLR INT0E ;关闭外部中断0避免为完成操作2次中断
MOV [0F2H],A ;压栈ACC到0F2H
MOV A,STATUS ;
MOV [0F3H],A ;压栈status标志寄存器到0F3H
INC [8DH] ;个位数码管加1
MOV A,10 ;
SUB A,[8DH] ;用10减个位数码管的数判断是否相等
SNZ Z ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMP A2 ;Z=1结果不等返回继续加1
MOV A,0 ;Z=0结果相等
MOV [8DH],A ;存0继续显示
INC [8CH] ;十位数码管加1
MOV A,10 ;用10减十位数码管的数判断是否相等
SUB A,[8CH] ;
SNZ Z ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMP A2 ;Z=1结果不等返回继续加1
MOV A,0 ;Z=0结果相等
MOV [8CH],A ;存0继续显示
INC [8BH] ;百位数码管加1
MOV A,10 ;
SUB A,[8BH] ;用10减百位数码管的数判断是否相等
SNZ Z ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMP A2 ;Z=1结果不等返回继续加1
MOV A,0 ;Z=0结果相等
MOV [8BH],A ;存0继续显示
INC [8AH] ;千位数码管加1
MOV A,10 ;用10减千位数码管的数判断是否相等
SUB A,[8AH] ;
SNZ Z ;结果为0相等Z为1跳过一条指令否则z为1继续执行
JMP A2 ;Z=1结果不等返回继续加1
MOV A,0 ;Z=0结果相等
MOV [8AH],A ;存0继续显示
JMP A2 ;已经到9999清为0000返回反复执行
A2: 
CALL M001 
SNZ PA.3 ;判断PA3是否为高电平(去抖)
JMP A2 ;是低电平则返回判断
CALL M001 ;延时防止抖动 
SNZ PA.3 ;
JMP A2 ;
MOV A,[0F3H] ;弹栈后进先出先进后出 
MOV STATUS,A ;弹栈0F1H的数到标志寄存器
MOV A,[0F2H] ;弹栈0F0H的数到acc
CLR INT0F ;清中断标志
SET INT0E ;使能外部中断
RETI ;中断返回
;*******************************************************
; 中断服务子程序
;******************************************************* 
ZD1: 
MOV [0F0H],A ;压栈ACC到0F0H
MOV A,STATUS ;
MOV [0F1H],A ;压栈status标志寄存器到0F1H
CLR PC ;清PC(清屏幕) 
MOV A,Q1 ;数据表地址
CLR TBHP ;清数据表地址高位否则出错
ADD A,IAR0 ;利用间接寄存器找到要显示段码所在数据表的地址 
MOV TBLP,A ;表格指针寄存器TBLP
TABRD PD ;查表并将数据存到PD口寄存器
MOV A,[80H] ;位码寄存器
MOV PC,A ;将位码寄存器的数存到PC口寄存器
;段码和位码的数都有了所以数码管被点亮
INC MP0 ;间接寄存器指针加1指向下一个段码寄存器
RL [80H] ;左移位码寄存器控制下一个数码管
SNZ [80H].5 ;判断是否控制完4个数码管
JMP ZD2 ;退出中断继续
MOV A,1 ;是则从新初始化寄存器数据
MOV [80H],A ; 
MOV A,8AH ;千位数码管对应寄存器
MOV MP0,A ;存到间接寄存器0
ZD2: 
MOV A,[0F1H] ;弹栈后进先出先进后出 
MOV STATUS,A ;弹栈0F1H的数到标志寄存器
MOV A,[0F0H] ;弹栈0F0H的数到acc
CLR MF0F ;清多功能标志
CLR T2AF ;清定时器2比较器A标志
RETI ;中断返回 
;**************************************
; 延时子程序
;************************************** 
M001: 
MOV A,1
MOV [85H],A
M002: 
MOV A,10
MOV [86H],A
M003: 
MOV A,250 
MOV [87H],A
M004: 
SDZ [87H]
JMP M004
SDZ [86H]
JMP M003
SDZ [85H]
JMP M002 
    RET 
END

关键字:合泰  单片机  中断嵌套 引用地址:合泰单片机中断嵌套

上一篇:合泰单片机笔段式LCD显示程序+电路图
下一篇:合泰单片机定时器数码管显示

推荐阅读最新更新时间:2024-03-16 14:02

基于C8051F单片机信号发生器设计与应用
1 引言 在实际的弹道加速度测试中,需要产生许多波形曲线用来验证,而能够产生任意波形的信号发生器价格昂贵,不适合工程实际的需求.通过设计产生的信号发牛装置,不仅成本低,而且功能强大,可以产生满足各种需要的信号。C8051Fxxx系列单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件之外,片内还集成了数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件;内置FLASH程序存储器、内部RAM,大部分器件内部还有位于外部数据存储器窄间的RAM,即XRAM。数模混合的高度集成使得该单片机系统IJ以方便实现数控及简单信号处理等功能。C8051F121
[单片机]
基于C8051F<font color='red'>单片机</font>信号发生器设计与应用
单片机实现可编程逻辑器件的配置
    摘要: 介绍基于SRAM的可重配置PLD的原理;通过对多种串行配置的比较,提出单片机与存储器串行配置方式;从系统复杂度、可靠性和经济性等方面进行比较和分析。     关键词: 复杂可编程逻辑器件 静态随机存储器 被动串行 引言 基于SRAM(静态随机存储器)的可得配置PLD(可编程逻辑器件)的出现,为系统设计者动态改变运行电路中PLD的逻辑功能创造了条件。PLD使用SRAM单元来保存配置数据决定了PLD内部的互连和功能。改变这些数据,也就改变了器件的逻辑功能。由于SRAM的数据是易失的,因此,这些数据必须保存在PLD器件以外的EPROM、EEPROM或Flash ROM等非易失存储器
[半导体设计/制造]
MCU市场呈现新局面,国内厂商如何抓住机遇进入市场
就当下 MCU 芯片缺货涨价,国际大厂商并购整合,整个市场面临着与之前略有不同的新环境。当然,对于国内厂商来说,应该抓住这一机遇进入市场。在2017深圳国际电子展暨嵌入式系统展上,《电子产品世界》编辑采访了 华大半导体 有限公司 MCU 事业部总经理谢文录先生,就当下 MCU 市场发展、国内厂商面临的机遇和挑战及如何与国际大厂商同台竞争进行了分析和解读。下面就随嵌入式小编一起来了解一下相关内容吧。 国内MCU产业发展不充分、不平衡 随着物联网发展的进一步深入,当下国产MCU产业发展主要面临发展不充分和不平衡两大难题。 其中,不充分主要体现在两个方面: 第一个不充分是很多国内产品找不到最合适的MCU芯片支持。以往新型的
[嵌入式]
基于单片机的自动量程切换电压测量系统设计
在电子系统设计调试过程中,电压测量往往是一个测控或测量系统中不可缺的项目。对于电压测量,若其在一个小动态范围内变化,则无论电平高低,要做到精确测量并不困难。但当被测量在宽动态范围内变化时,例如从mV级甚至 V级到V级,做到测量误差均匀的控制在一定范围之内,常用的方式是切换量程,即指定测量范围,例如常用的数字电压表等仪器。然而在许多情况下为了保证测量的实时性,测量时不可能变换测量通道的量程,因此要在整个电压变化范围内做到精确测量就凸显出其重要性。本文基于MCU AT89C51控制,实现了一种自动量程切换的电压测试系统。 1 电压测量原理及系统组成 为了对不同量级的电压信号进行测量,对输入信号进行放大时就不能采用相同的增益倍数。系统
[单片机]
基于<font color='red'>单片机</font>的自动量程切换电压测量系统设计
avr单片机eeprom初始化配置及说明
ATmega16 包含 512 字节的 EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。 EEPROM 的寿命至少为 100,000 次擦除周期。 EEPROM 的访问 由地址寄存器、数据寄存器和控制寄存器决定。 /* EEPROM 数据存储器 EEPROM 地址寄存器(EEARH 和 EEARL) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 Res: 保留 保留位,读操作返回值为零。 EEAR8..0
[单片机]
基于MCU的风光互补独立电源系统
摘要:结合实践论述了风光互补能源的合理性,给出了基于Mcu的风光互补独立电源的硬件构成以及软件流程。并对其中的关键技术:如双标三阶段充电的流程、逆变模块的MCU实现硬件构成等详加阐述。同时也结合实例,介绍了风光互补独立电源系统的实际应用。 关键词:微控制嚣(MCU);双标三阶段充电;逆变;风光互补系统 中图分类号:TM925 文献标识码:A 文章编号:0219—2713(2005)06 0035—04 0 引言 综合利用了风能、光能的风光互补独立电源系统是一种合理的电源系统。不仅能为电网供电不便的地区,如边防哨所,通讯的中继站,交通的信号站,勘探考察的工作站以及农牧区提供低成本、高可靠性的电源,而且也为解决当前的能源危机和环境污
[单片机]
c51单片机学习笔记-IO扩展(串转并)实验 - 74HC595
目的:通过 74HC595 模块控制 LED 点阵以一行循环滚动显示。 编译软件:keil5 过程: (1)先定义好74HC595 控制管脚,以及点阵列控制口 //定义 74HC595 控制管脚 sbit SRCLK=P3^6; //移位寄存器时钟输入 sbit RCLK=P3^5; //存储寄存器时钟输入 sbit SER=P3^4; //串行数据输入 #define LEDDZ_COL_PORT P0 //点阵列控制端口 u8 ghc595_buf ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; (2)重新定义了一个 ms 级延时函数 delay_ms,该函数与前面 de
[单片机]
c51<font color='red'>单片机</font>学习笔记-IO扩展(串转并)实验 - 74HC595
MCU巨头,血拼GPU性能
曾经,MCU是电子产品的控制核心,GPU是图像世界的掌控者,二者在过去很少有交集。随着越来越多图形处理需求,MCU中放GPU,已经不是什么新鲜操作。 最近一段时间,边缘AI概念的兴起,以及汽车图形显示性能的提升,越来越多的MCU厂商开始“卷”图像处理性能。 MCU的图形历史 在那个没有GPU的时代,所有图形还都是交给CPU绘制。虽然这没什么问题,但随着显示图形图像愈发复杂,CPU越来越力不从心。对计算机来说,低效率带来的就是延迟和卡顿,整体功耗也会随之攀升,GPU便应运而生,将CPU从繁重的图形计算任务中拯救了出来。 MCU也有类似的发展历程。早期MCU极少有图形显示的需求,即便有,也只是简单的12864之类
[单片机]
<font color='red'>MCU</font>巨头,血拼GPU性能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved