单片机原理,接口及应用---c51介绍.ppt

  1. 1、本文档共123页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理,接口及应用---c51介绍

单片机原理、接口及应用 ---嵌入式系统技术基础 C51介绍 (4)编译、连接产生目标代码(hex文件) 点击F7或工具按钮启动编译、连接功能。 完成后将在命令窗口中显示编译结果 若有语法错误,双击出错提示可指出错误所在行号 (5) 一般调试过程 ①启动调试过程——Ctrl+F5、 Debug-Start/Stop Debug Session ② 开始调试——详见下页 ③ 结束调试—— 、Debug-Stop Running 调试工具栏 复位 运行到光标行 执行完当前子程序 过程单步 单步 暂停 运行 调试菜单栏 快捷键 指向下条运行行 基本调试手段: 1、运行到光标行——从当前行运行到光标所在行(Ctrl+F10) 2、严格单步运行——遇到函数时亦单步进行(F11) 3、跨函数单步运行——遇到函数时将其视作一行语句(F10) 4、断点运行 ——全速运行到断点行停止(双击设置/解除断点) 5、监视输出端口——打开IO窗口 (Peripherals-I/O-Ports) 6、监视运行变量——打开Watch#1窗口(点击 ) …… 将调试通过的*.hex文件加载到*.DSN文件中后即可运行 Keil与Proteus的联合仿真运行(需要关联设置) 1 C51的程序结构 2 C51的数据结构 3 C51与汇编语言的混合编程 4 C51仿真开发环境 5 C51初步应用编程 5.1 IO端口的简单应用 5.1.1 基本输入输出单元与编程 5.1.2 LED数码管原理与编程 5.2 IO端口的进阶实践 基本输入输出单元与编程 输出单元: 发光二极管(LED)作为输出显示设备具有电路简单、功耗低、寿命长、响应速度快等特点。 低电平驱动 限流电阻R = 100Ω~1kΩ 高电平驱动 灌电流 拉电流 输入单元: 按键或开关是最基本的输入设备。 【强调】 P0口为漏极开路结构——需要外接上拉电阻 P0~ P3为准双向IO口——读引脚前需先写1 实例1 独立按键识别 【要求】开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯保持到下次按键动作时为止。 独立按键——每个按键都彼此独立,且各占有一根I/O口线。 ① 按键的闭合电平为0,但LED的驱动电平为1,故不能直接将P0口的状态送到P1口,而应使其先取反再送出; ② 为使按键抬起后LED能保持先前的点亮状态,需要在按键都未压下期间禁止向P1送出P0状态值。 【分析】 ③ 为避免P0口未使用端口产生的不利影响,应对其高4位清零。 参考程序如下 “取反”操作的优先级高于“与”操作 编程界面和运行界面分别如下图 实例2 键控流水灯 【要求】 K1为“开始键”,可使K3和K4有效,初值为“自下向上” 运动; K2 为“停止键”,可使K3和K4失效,并使全灯关闭; K3和K4为“方向键”,分别对应 “自上向下”和 “自下向上” 运动。 分析——整体关系 设置方向和启停标志,且赋初值0 获取按键状态值 启停标志=0? 根据键值修改方向和启停标志值 方向标志=0? 关闭LED LED ↑ Y LED ↓ Y N N 分析——局部关系(获取按键状态) (P00x0f)=0x0f ? 读P0口 键值 = P0 0x0f 键值 = 0 Y 结束 N 分析——局部关系(修改状态标志) 对应功能:启停=1, 启停=0, 方向=1, 方向=0 switch (表达式) { case 常量表达式1:语句1; case 常量表达式2:语句2; ……… case 常量表达式n:语句n; default:语句n+1; } 1#~4#的键值:0x0e, 0x0d, 0x0b, 0x07 分析——局部关系(LED循环控制) 建立LED显示码数组 = {01,02,04,08} 循环4次 ? N 结束 延时 Y LED↑环节 自右向左循环输出状态码 循环4次 ? N 结束 延时 Y LED↓环节 自左向右循环输出状态码 参考程序如下 if ((P0 0x0f) = = 0x0f) return 0; return (P0 0x0f); Keil项目和程序界面如下图所示 实例3 混合编程 将实例2中的C51函数key()的功能改用汇编语言实现,并完成系统的混合编程。 程序说明 按照混合编程规则分别编写汇编语言(流水灯.asm)与C51语言(流水灯汇.c)两个程序文件,并将其添加到Ke

文档评论(0)

sandaolingcrh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档