单片机程序设计例题.ppt
《单片机程序设计例题.ppt》由会员分享,可在线阅读,更多相关《单片机程序设计例题.ppt(13页珍藏版)》请在装配图网上搜索。
单片机程序设计例题主讲 钱锐 一 基本结构程序例1假定在外部RAM中有ST1 ST2和ST3共3个连续单元 其中ST1 ST2单元中分别存放着两个8位无符号数 要求找出其中的大数并存入ST3单元 分析 两个无符号数的大小比较可利用两数相减是否有借位来判断 流程图和程序如下所示 例1参考程序如下 START CLRCMOVDPTR ST1MOVXA DPTRMOVR7 AINCDPTRMOVXA DPTRSUBBA R7JCBIG1MOVXA DPTRSJMPBIG2BIG1 XCHA R7BIG2 INCDPTRMOVX DPTR ASJMP 例2计算50个8位二进制数 单字节 之和 要求 50个数存放在30H开头的内部RAM中 和放在R6R7中 分析 采用DJNZ循环体的流程框图如下页所示 在参考程序中 R0为数据地址指针 R2为减法循环计数器 需要指出的是 在使用DJNZ控制时 循环计数器初值不能为0 当为0时 第一次进入循环执行到DJNZ时 减1使R2变为FFH 循环次数成了256 显然不合题意 例2流程 程序如下 START MOVR6 0MOVR7 0MOVR2 50MOVR0 30HLOOP MOVA R7ADDA R0MOVR7 ACLRAADDCA R6MOVR6 AINCR0DJNZR2 LOOPSJMP 例3设计1秒延时子程序 假设fosc 12MHz 分析 软件延时与指令的执行时间关系密切 在使用12MHz晶振时 一个机器周期的时间为1us 执行一条DJNZ指令的时间为2us 我们可以采用三重循环的方法写出延时1秒的子程序流程 程序如下图所示 例3的流程 程序如下DELAY MOVR7 10 DL3 MOVR6 200 DL2 MOVR5 250 DL1 DJNZR5 DL1 DJNZR6 DL2 DJNZR7 DL3 RET 例4把内部RAM中从ST1地址开始存放的数据传送到以ST2开始的存储区中 数据块长度未知 但已知数据块的最后一个字节内容为00H 而其它字节均不为0 并设源地址与目的地址空间不重复 分析 显然 我们可以利用判断每次传送的内容是否为0这一条件来控制循环 也可用CJNE来比较与0是否相等设计 利用判A转移控制的循环流程图如下图所示 例4参考程序如下 START MOVR0 ST1MOVR1 ST2LOOP MOVA R0JZENTMOV R1 AINCR0INCR1SJMPLOOPENT RET 二 控制流程设计单片机的控制系统中 为了实现系统的自动控制 必须将控制现场的信息输入到单片机 经过计算机的处理以后以被控对象能够接受的形式输出到执行机构 实现对现场的控制 例5电机的简单起停控制 其框图如下页图a所示1 分析 简单的电机起动停止控制 其控制的示意图及I O分配如图b所示 输入信号 启动按钮SB1 停止按钮SB2输出信号 继电器KA 假定 按下按钮 相应的接口信号为低电平 P1 1 0 时 若 程序使P1 3 1 即KA 1 则 电机启动 2 按照上述的控制思路 我们可以方便的画出流程图 如下图所示 ORG1000HSTR MOVP1 00000110BWT1 JBP1 1 WT1 启动 SETBP1 3 电机启动WT2 JBP1 2 WT2 停止 CLRP1 3 电机停止SJMPWT1END 谢谢各位- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 程序设计 例题
![提示](https://www.zhuangpeitu.com/images/bang_tan.gif)
关于本文