2009年全国大学生电子设计竞赛题-小车汇编程序
根据给定的信息,本文将对2009年全国大学生电子设计竞赛中的C组题目——小车汇编程序进行详细解析。此程序采用汇编语言编写,主要用于控制小车的各项功能,包括显示处理、时间清零、输入处理以及选择等功能。 ### 一、程序结构与变量定义 #### 1. 寄存器与端口定义 - **寄存器与端口定义**:在程序开头部分,作者通过一系列`EQU`指令定义了若干个端口地址及寄存器,用于后续程序操作。 - `RS EQU P3.6`、`RW EQU P3.5`、`IRIN EQU P3.4`等定义了控制LCD的各种信号线。 - `LEDEQU P3.1`指定了LED的控制端口。 - `HCEQU P2.4`、`HC0 EQU P2.5`、`HC1 EQU P2.6`、`HC2 EQU P2.7`定义了控制电机或传感器的端口。 - `heizuoEQU P2.0`、`heiyouEQU P2.1`、`heizhongEQU P2.3`用于控制黑线传感器。 #### 2. 内存变量定义 - **内存变量定义**:定义了一系列用于存储程序运行状态的内存变量。 - `IRCOMEQU 20H`为输入缓冲区起始地址。 - `miao1EQU 00H`、`miao2EQU 01H`用于表示时间计数。 - `maohaoEQU 06H`用于表示冒号符号。 - `Sa_bitEQU 07h`、`Sb_bitEQU 08h`、`Ma_bitEQU 09H`分别表示秒、分、时的个位数。 - `lunshuEQU 10H`、`lunshu1EQU 11H`用于表示轮数或其它计数值。 - `luduanbiaozhiEQU 12H`用于标志路程断标。 - `jiaodupjequ 12H`用于表示角度偏移。 - `jiaodu equ 30H`角度值。 - `jiaoduzs1equ 13H`、`jiaoduzs2EQU 14H`分别表示角度的高位与低位。 ### 二、程序流程与功能实现 #### 1. 主程序 - **主程序**:位于`ORG 0000H`处,首先初始化堆栈指针`SP`,然后调用数据预处理函数`shujuyuchuli`等,完成系统的初始化配置。 - `ACALL shujuyuchuli`用于初始化数据结构。 - `ACALL qing0`进行清零处理。 - `ACALL xianshiqing0`显示清零后的信息。 - `ACALL tishiyu`显示提示信息。 - `ACALL shuruchuli`处理输入。 - `ACALL choice`根据用户选择执行相应功能。 #### 2. 数据预处理函数 - **数据预处理函数**:该函数初始化了某些变量的默认值,如`IRCOM`、`maohao`等,并返回到调用者。 #### 3. 清零函数 - **清零函数**:设置了一些标志位并清除相关标志,如`luduanbiaozhi`、`HC0`、`HC1`、`HC2`、`heizuo`、`heiyou`等。 #### 4. 显示清零函数 - **显示清零函数**:初始化LCD,并设置其显示模式为8位数据传输方式,接着显示“0”字符。 #### 5. 显示提示信息函数 - **显示提示信息函数**:使用`WRITE1`函数从表格中获取字符并显示到LCD上,提示用户进行操作。 #### 6. 其他辅助函数 - **其他辅助函数**: - `ENABLE`:实现LCD使能信号的控制。 - `WRITE1`:从表格中读取字符并显示。 - `WRITE2`:写入LCD。 - `DELAY`:延时函数,用于LCD更新或定时。 ### 三、程序总结 本程序为2009年全国大学生电子设计竞赛C组题目的汇编程序,通过上述分析可以看出,该程序主要实现了对小车的控制功能,包括时间显示、输入处理及基本动作控制等。通过对寄存器和端口的定义,以及各种辅助函数的设计,完成了小车的基本操作。整体来看,该程序结构清晰,逻辑明确,能够很好地完成竞赛要求的功能。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助