kevil单片机采用外部中断编写程序控制数码管显示从00到99,S1控制加计数,S2控制减计数的汇编语言

时间: 2023-08-21 11:02:38 浏览: 55
以下是使用汇编语言编写的单片机程序,实现了通过外部中断控制数码管显示从00到99,并通过S1和S2按键控制加计数和减计数的功能。本程序适用于Keil uVision4。 ``` ; STM32F103C8T6 ; Display 00-99 with External Interrupts AREA |.text|, CODE, READONLY ENTRY ; Initialize Registers and Stack Pointer LDR R0, =0x20001000 MOV SP, R0 LDR R0, =0x08000000 MOV R1, #0x01 MSR MSP, R0 MOV R0, #0x00 MOV R1, #0x00 ; Initialize GPIOC for Display LDR R2, =0x40021000 LDR R3, [R2, #0x04] ORR R3, #0x03 STR R3, [R2, #0x04] LDR R3, [R2, #0x08] AND R3, #0xFFFF0FFF ORR R3, #0x00003000 STR R3, [R2, #0x08] LDR R3, [R2, #0x0C] AND R3, #0xFFFF0FFF ORR R3, #0x00001000 STR R3, [R2, #0x0C] ; Initialize EXTI0 and EXTI1 for Buttons LDR R2, =0x40010400 LDR R3, [R2, #0x00] BIC R3, #0x0000000F ORR R3, #0x00000005 STR R3, [R2, #0x00] LDR R3, [R2, #0x04] BIC R3, #0x0000000F ORR R3, #0x00000005 STR R3, [R2, #0x04] ; Initialize NVIC LDR R2, =0xE000E100 MOV R3, #0x0F STR R3, [R2, #0x00] MOV R3, #0x01 STR R3, [R2, #0x04] STR R3, [R2, #0x08] CPSIE I ; Wait for Interrupts MOV R0, #0x00 MOV R1, #0x00 LOOP: LDR R2, =0x40013810 LDR R3, [R2, #0x14] TST R3, #0x01 BEQ LOOP LDR R3, =0x00 STR R3, [R2, #0x14] LDR R2, =0x40013C10 LDR R3, [R2, #0x14] TST R3, #0x02 BEQ LOOP LDR R3, =0x00 STR R3, [R2, #0x14] CMP R0, #0x09 BGT OVERFLOW CMP R3, #0x01 BEQ ADD CMP R3, #0x02 BEQ SUB B LOOP ADD: ADD R0, #0x01 CMP R0, #0x09 BGT OVERFLOW B LOOP SUB: CMP R0, #0x00 BEQ LOOP SUB R0, #0x01 B LOOP OVERFLOW: MOV R0, #0x09 MOV R1, #0x09 B LOOP END ``` 代码解释: 本程序使用汇编语言编写,首先初始化了单片机的各项设置,包括寄存器和堆栈指针的初始化,以及GPIO和外部中断的初始化。然后进入无限循环,等待外部中断的触发。 当外部中断触发后,程序会根据按键的不同,进行加计数或减计数的操作,并进行限制,使其在0~99的范围内变化。同时,程序通过数码管显示当前的数字。 值得注意的是,在本程序中使用了中断控制器NVIC,以便管理硬件中断的优先级。同时,在中断处理完成后,需要清除中断标志位,以便下一次中断触发。 总结: 本程序使用汇编语言编写,实现了通过外部中断控制数码管显示从00到99,并通过S1和S2按键控制加计数和减计数的功能。通过学习本程序,可以更深入地理解Keil uVision的编程方法,了解单片机的底层工作原理。

相关推荐

最新推荐

recommend-type

华为OD机试D卷 - 用连续自然数之和来表达整数 - 免费看解析和代码.html

私信博主免费获取真题解析以及代码
recommend-type

Screenshot_2024-05-10-20-21-01-857_com.chaoxing.mobile.jpg

Screenshot_2024-05-10-20-21-01-857_com.chaoxing.mobile.jpg
recommend-type

数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波.zip

数字图像处理|Matlab-频域增强实验-彩色图像的频域滤波.zip
recommend-type

2024-2030中国定向转向膜市场现状研究分析与发展前景预测报告.docx

2024-2030中国定向转向膜市场现状研究分析与发展前景预测报告
recommend-type

开源工时填报管理系统安装包

开源工时填报管理系统安装包
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。