




免费预览已结束,剩余47页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章习题 1 什么是单片机 单片机和通用微机相比有何特点 答 单片机又称为单片微计算机 它的结构特点是将微型计算机的基本功能部件 如中央处理 器 CPU 存储器 输入接口 输出接口 定时 计数器及终端系统等 全部集成在一个半导体 芯片上 虽然单片机只是一个芯片 但无论从组成还是从逻辑功能上来看 都具有微机系统的定义 与通用的微型计算机相比 单片机体积小巧 可以嵌入到应用系统中作为指挥决策中心 是应用系 统实现智能化 2 单片机的发展有哪几个阶段 8 位单片机会不会过时 为什么 答 单片机诞生于 1971 年 经历了 SCM MCU SOC 三大阶段 早期的 SCM 单片机都 是 8 位或 4 位的 其中最成功的是 INTEL 的 8031 此后在 8031 上发展出了 MCS51 系列 MCU 系统 基于这一系统的单片机系统直到现在还在广泛使用 随着工业控制领域要求的提高 开 始出现了 16 位单片机 但因为性价比不理想并未得到很广泛的应用 90 年代后随着消费电子产品 大发展 单片机技术得到了巨大提高 随着 INTEL i960 系列特别是后来的 ARM 系列的广泛应用 32 位单片机迅速取代 16 位单片机的高端地位 并且进入主流市场 然而 由于各应用领域大量需 要的仍是 8 位单片机 因此各大公司纷纷推出高性能 大容量 多功能的新型 8 位单片机 目前 单片机正朝着高性能和多品种发展 但由于 MCS 51 系列 8 位单片机仍能满足绝大多 数应用领域的需要 可以肯定 以 MCS 51 系列为主的 8 位单片机 在当前及以后的相当一段时 间内仍将占据单片机应用的主导地位 3 举例说明单片机的主要应用领域 答 单片机广泛应用于仪器仪表 家用电器 医用设备 航空航天 专用设备的智能化管理及 过程控制等领域 大致可分如下几个范畴 智能仪器 单片机具有体积小 功耗低 控制功能强 扩展灵活 微型化和使用方便等优点 广泛应用于 仪器仪表中 结合不同类型的传感器 可实现诸如电压 电流 功率 频率 湿度 温度 流量 速度 厚度 角度 长度 硬度 元素 压力等物理量的测量 采用单片机控制使得仪器仪表数字 化 智能化 微型化 且功能比起采用电子或数字电路更加强大 例如精密的测量设备 电压表 功率计 示波器 各种分析仪 工业控制 单片机具有体积小 控制功能强 功耗低 环境适应能力强 扩展灵活和使用方便等优点 用 单片机可以构成形式多样的控制系统 数据采集系统 通信系统 信号检测系统 无线感知系统 测控系统 机器人等应用控制系统 例如工厂流水线的智能化管理 电梯智能化控制 各种报警系 统 与计算机联网构成二级控制系统等 家用电器现在的家用电器广泛采用了单片机控制 从电饭 煲 洗衣机 电冰箱 空调机 彩电 其他音响视频器材 再到电子秤量设备和白色家电等 网络和通信 现代的单片机普遍具备通信接口 可以很方便地与计算机进行数据通信 为在计算机网络和通 信设备间的应用提供了极好的物质条件 现在的通信设备基本上都实现了单片机智能控制 从手机 电话机 小型程控交换机 楼宇自动通信呼叫系统 列车无线通信 再到日常工作中随处可见的移 动电话 集群移动通信 无线电对讲机等 医用设备领域 单片机在医用设备中的用途亦相当广泛 例如医用呼吸机 各种分析仪 监护仪 超声诊断设 备及病床呼叫系统等等 模块化系统 某些专用单片机设计用于实现特定功能 从而在各种电路中进行模块化应用 而不要求使用人 员了解其内部结构 如音乐集成单片机 看似简单的功能 微缩在纯电子芯片中 有别于磁带机的 原理 就需要复杂的类似于计算机的原理 如 音乐信号以数字的形式存于存储器中 类似于 ROM 由微控制器读出 转化为模拟音乐电信号 类似于声卡 在大型电路中 这种模块化应 用极大地缩小了体积 简化了电路 降低了损坏 错误率 也方便于更换 汽车电子 单片机在汽 车电子中的应用非常广泛 例如汽车中的发动机控制器 基于 CAN 总线的汽车发动机智能电子控 制器 GPS 导航系统 abs 防抱死系统 制动系统 胎压检测等 此外 单片机在工商 金融 科研 教育 电力 通信 物流和国防航空航天等领域都有着十 分广泛的用途 4 将十进制数 37 转换为二进制 BCD 码和十六进制数 并对转换结果进行对比分析 答 37 100101 B 25 H BCD 码为 0011 0111 可见 同一个数用不同进制表示 其结果也不同 5 写出下列十进制数在 8 位微机中的原码 反码和补码形式 1 36 原码 0010 0100B 反码 0010 0100B 补码 0010 0100B 2 36 原码 1010 0100B 反码 1101 1011B 补码 1101 1100B 3 127 原码 0111 1111B 反码 0111 1111B 补码 0111 1111B 4 128 原码 1000 0000B 反码 0111 1111B 补码 1000 0000B 5 121 原码 1111 1001B 反码 1000 0110B 补码 1000 0111B 6 对于二进制数 1000 1001B 若理解为无符号数 则该数对应十进制数为多少 若理解为 有符号数 则该数对应十进制为多少 若理解为 BCD 数 则该数对应十进制数为多少 答 1000 1001B 无符号数 137 有符号数 9 BCD 数 89 7 对下列各组数进行 与 或 和 异或 运算 1 1010 1010 和 0000 0000 与 0000 0000 或 1010 1010 异或 1010 1010 2 0111 0111 和 1000 1000 与 0000 0000 或 1111 1111 异或 1111 1111 3 1110 1110 和 0111 0111 与 0110 0110 或 1111 1111 异或 1001 1001 4 0011 1100 和 1111 0000 与 0011 0000 或 1111 1100 异或 1100 1100 8 Proteus ISIS 的工作界面中包含哪几个窗口 菜单栏中包含哪几个选项 答 Proteus ISIS 的工作界面主要包括标题栏 菜单栏 工具栏 状态栏 方位控制按钮 仿真进程控制按钮 对象选择窗口 原理图编辑窗口和预览窗口等 主菜单栏包含文件 查看 编辑 工具 设计 图形 源文件 调试 库 模板 系统 帮助 选项 9 利用 ISIS 模块开发单片机系统需要经过哪几个主要步骤 答 1 启动 ISIS 2 绘制电路原理图 3 输入单片机程序 4 进行源代码调试 5 仿真运行 10 何谓 PCB 利用 ARES 模块进行 PCB 设计需要经过哪几个主要步骤 答 PCB Printed Circuit Board 中文名称为印制电路板 又称印刷电路板 印刷线路 板 是重要的电子部件 是电子元器件的支撑体 是电子元器件电气连接的提供者 由于它是采用 电子印刷术制作的 故被称为 印刷 电路板 利用 ARES 模块进行 PCB 设计的主要步骤 1 启动 ARES 2 元器件布局 3 元器件布线 4 铺铜 5 三维效果 图 6 CADCAM 输出 第 2 章 MCS 51 单片机结构及原理 习题 1 MSC 51 单片机内部由哪些功能部件组成 各有什么功能 答 以 51 单片机为例 其内部功能部件有 控制器 是对取自程序存储器中的指令进行译码 在规定的时刻发出各种操作所需的控制信号 完成指令所规定的功能 运算器 根据控制器发来的信号 执行算术逻辑运算操作 存储器 包括程序存储和数据存储器 定时器计数器 2 个 16 位定时器 计数器 可对机器周期计数 也可对外部输入脉冲计数 中断系统 可响应三个内部中断源和两个外部中断源的中断请求 输入输出接口 4 个 8 位并行口和一个全双工串行口 2 MSC 51 单片机外部引脚的名称是什么 各有什么功能 答 1 电源及晶振引脚 VCC 40 脚 5V 电源引脚 VSS 20 脚 接地引脚 XTAL1 19 脚 外接晶振引脚 内置放大器输入端 XTAL2 18 脚 外接晶振引脚 内置放大器输出端 2 控制引脚 RST VPD 9 为复位 备用电源引脚 为地址锁存使能输出 编程脉冲输入 输出访问片外程序存储器读选通信号 外部 ROM 允许访问 编程电源输入 3 并行 I O 口引脚 P0 0 P0 7 39 32 脚 P0 口 P1 0 P1 7 1 8 脚 P1 口 P2 0 P2 7 21 28 脚 P2 口 P3 0 P3 7 10 17 脚 P3 口 3 51 系列单片机的封装有哪些类型 请说明每一种封装引脚之间的距离 答 51 系列单片 机的封装有 40 引脚双列直插封装 DIP dual in line package 引脚之间的距离是 100mil 44 引脚方形扁平封装 QFP quad flat package 方式 引脚之间的距离是 44 引脚带引线的塑料芯片载体 PLCC Plastic Leaded Chip Carrier 4 什么是复位 单片机复位电路有哪几种 工作原理分别是什么 答 复位 使单片机恢 复原始默认状态的操作 单片机复位电路有 上电复位电路 由电阻和电容构成 通过上电时 电容相当于短路而使复位 引脚在晶振有效的情况下保持 2 个机器周期的高电平 按钮开关复位电路 由两个电阻的分压构成 通过手工按下按钮 使复位引脚在晶振有效的情况下保持 2 个机器周期的高电平 5 通常的微机系统存储器结构有哪几种 MCS 51 单片机存储器属于哪一类 CS 51 可寻 址多大空间 答 通常的微机系统存储器结构有两种结构 即哈佛结构和冯诺依曼结构 也叫普林斯顿结构 MCS 51 单片机存储器属于 MCS 51 可寻址空间是两个 64KB 即 64KB 的程序存储空间和 64KB 的数据存储空间 6 片内 RAM 中低 128 个单元划分为哪三个主要部分 各部分的主要 功能是什么 答 片内 RAM 中低 128 个单元划分为三个部分 工作寄存器区 00H 1FH 四组 每组 8 个 可作用工作寄存器切换使用 可位寻址区 20H 2FH 16B 位地址为 00H 7FH 用作为按位寻址的空间 用户 RAM 区 30H 7FH 80B 用作普 通 RAM 单元或堆栈 7 程序状态字寄存器 PSW 各位的定义是什么 答 程序状态字寄存器 PSW 各位的定义如 下 PSW 7 PSW 6 PSW 5 PSW 4 PSW 3 PSW 2 PSW 1 PSW 0 PSW 7 进 借位标志 CY 加法有进位时置 1 减法有借位时置 1 PSW 6 辅助进位标志 AC 加法运算低四位向高 上四位有进位时置 1 PSW 5 PSW 1 用户标志位 F0 和用户标志位 F1 保存用户的位数据 PSW 4 PSW 3 工作寄存器选择控制位 RS1 和 RS0 00 至 11 分别选择四组工作之一作 为当前工作寄存器 PSW 2 溢出标志位 OV 有符号数加 减运算结果有溢出或乘除上结果异常 乘法运算结果 大于 255 即乘积在 BA 中 或除法运算除数为 0 时置 1 PSW 0 奇偶标志位 P 累加器 A 中 1 的个数为奇数时置 1 8 什么是时钟周期 什么是机器周期 什么是指令周期 当振荡频率为 12MHz 时 一个机 器周期为多少微秒 答 时钟周期又叫振荡周期或拍 用 P 表示 是 MCS 51 单片机中最小的时间单位 在一个 时钟周期内 CPU 完成一个最基本的动作 机器周期 由 12 个时钟周期构成 完成一个基本操作 指令周期 是执行一条指令所需的时间 根据指令的复杂性 可由 1 4 个机器周期构成 当振荡频率为 12MHz 时 一个机器周期为 1 微秒 9 P0 P1 P2 和 P3 口的结构和功能分别是什么 答 P0 口的每一位由 1 个锁存器 2 个三态缓冲器 1 个输出控制电路 非门 X 与门 电子开关 MUX 输出驱动电路构成 其功能既可以作为通用 I O 口实现输入 输出功能 也可作为 单片机地址线的低 8 位和数据线实现外部扩展功能 在用作输入输出口时 需外接上拉电阻 P1 口的每一位由 1 个锁存器 1 个场效应管驱动器 V 和 2 个三态门缓冲器构成 其作用是 用作输入输出口 P2 口的每一位由 1 个锁存器 2 个三态缓冲器 1 个输出控制单元 1 个输出驱动单元构成 其功能是用作输入输出口 或地址总线的高 8 位 P3 口的每一位由 1 个锁存器 2 个三态缓冲器 1 个第二功能控制单元 1 个输出驱动单元 构成 其作用是用作输入输出口或第二功能 10 51 单片机引脚 ALE 的作用是什么 当 51 不外接存储器时 ALE 上的输出的脉冲频率 是多少 答 51 单片机引脚 ALE 的作用是对外部存储寻址时锁存 P0 口输出的低 8 位地址 当 51 不 外接存储器时 ALE 上的输出的脉冲频率是 fosc 6 第 3 章 单片机的汇编语言与程序设计 习题 1 MCS 51 单片机有哪几种寻址方式 适用于什么地址空间 答 MCS 51 单片机有 7 种寻址方式 直接寻址 寄存器寻址 寄存器间接寻址 立即寻址 变址寻址 位寻址 相对寻址 直接寻址方式 操作数的地址由指令直接给出 适用于片内 RAM 的所有地址空间 如 MOV A 68H MOV A PSW 寄存器寻址方式 指令给出的是寄存器的编码 操作数在编码指定的寄存器中 适用于片内 00H 至 1FH 的 32 个字节 用 R0 R7 表示 通过 PSW 的 RS1 和 RS0 选择组号确定对应 32 个字节中的其中 8 个 还有累加器 A 以及乘除法指令中的 A 和 B 寄存器 位寻址方式中的布 尔累加器 C MOV A R1 MUL AB INC DPTR 寄存器间接寻址方式 指令给出的是寄存器的编码 操作数地址在编码指定的寄存器中 适用 于片内 RAM 的全部空间 其中 52 系列中的 80H 至 FFH 只能用寄存器间接寻址 如 MOV A R0 MOV A R1 MOVX A DPTR 立即寻址方式 操作数本身在指令中直接 给出适用于用 8 位立即数对片内 RAM 所有地址单 元赋值 也可用 16 位立即数对 DPTR 赋值 如 MOV A 0E2H MOV DPTR 2000H 变址寻址方式 以 DPTR 或 PC 作为基地址寄存器 以累加器 A 作为变址寄存器 将基址寄存 器与变址寄存器的内容相加形成操作数的实际地址的一种寻址方式 变址寻址方式适用于程序存储 器 ROM 仅有三条指令如下 MOVC A A DPTR MOVC A A PC JMP A DPTR 位寻址方式 指令中直接给出操作数所在单元的位地址 适用于片内 RAM 中地址 20H 至 2FH 中的 16 个字节中的 128 个位地址空间和 80H 至 FFH 中地址中可以被 8 整除的所有 SFR 中的每个位地址空间 如 MOV C 7FH MOV F0 C MOV C ACC 7 相对寻址方式 为相对转移指令而设 指令中直接给出转移的相对偏移量 其转移目标在当前 指令 128 至 127 字节范围内的地址空间 如 SJMP START HERE SJMP HERE 等效于 SJMP 2 MCS 51 单片机的 PSW 程序状态字中无 ZERO 零 标志位 怎样判断某内部数据单元的 内容是否为零 答 MCS 51 单片机的 PSW 程序状态字中无 ZERO 零 标志位 判断某内部数据单元的内容 是否为零是能通过取数到 A 累加器 再判断 A 中的每一位是否为零来确定其值是否为零 3 编程将内部 RAM 的 20H 30H 单元内容清零 解 设一个片内 RAM 指针 R0 先指向首地址 20H 通过累加器 A 清零 然后采用间接寻址 方式依次将 A 中的零值传送到指针所指的片内 RAM 单元 每传送一个字节 地址指针加 1 直到 达到地址为 30H 或达到计数器规定的 17 个字节为止 程序 1 MOV R0 20H 设地址指针初值 CLR A 累加器清 0 CONT MOV R0 A 置 0 指针所指单元 INC R0 地址指针加 1 CJNE R0 31H CONT 指针未超过终点则继续 SJMP 暂停 程序 2 MOV R0 20H 设地址指针初值 CLR A 累加器清 0 MOV R7 17 计数器赋初值 从 20H 到 30H 共 17 个字节 CONT MOV R0 A 置 0 指针所指单元 INC R0 地址指针加 1 DJNZ R7 CONT 计数器减 1 非 0 则继续 SJMP 暂停 4 编程查找内部 RAM 的 32H 41H 单元中是否有 0AAH 这个数据 若有这一数据 则将 50H 单元置为 0FFH 否则将 50H 单元清零 解 设一个片内 RAM 指针 R0 先指向首地址 32H 比较 R0 与 0AAH 若相等 则退出 循环 给 50H 单元赋 0FFH 若不相等 则 R0 加 1 为继续比较下一个字节做准备 直到达到地 址为 41H 或达到计数器规定的 16 个字节为止还没找到 则给 50H 单元赋 00H 程序 1 MOV R0 32H 设地址指针初值 CONT CJNE R0 0AAH NEXT 比较查找值与指针所指单元的值 不相等转移 MOV A 0FFH 相等 则准备好要赋的标志值 0FFH SJMP DOWN 转存到保存结果处 NEXT INC R0 修改地址指针 CJNE R0 42H CONT 若指针未越过终点 则继续 MOV A 00H 查找失败 则将 00H 存入结果标志单元 DOWN MOV 50H A 将比较结 果标志存入 50H 单元 SJMP 暂停 END 程序 2 MOV R7 16 计数器赋初值 从 20H 到 30H 共 16 个字节 MOV R0 32H 设地址指 针初值 CONT CJNE R0 0AAH NEXT 比较查找值与指针所指单元的值 不相等转移 MOV A 0FFH 相等 则准备好要赋的标志值 0FFH SJMP DOWN 转存到保存结果处 NEXT INC R0 修改地址指针 DJNZ R7 CONT 计数器减 1 非 0 则继续 MOV A 00H 查找失败 则将 00H 存入结果标志单元 DOWN MOV 50H A 将比较结 果标志存入 50H 单元 SJMP 暂停 END 5 查找 20H 4FH 单元中出现 00H 的次数 并将查找结果存入 50H 单元 解 从 20H 到 4FH 共 48 个字节 MOV R7 48 字节计数器赋初值 MOV R0 20H 设地址指针初值 CONT CJNE R0 00H NEXT 比较查找值与指针所指单元的值 不相等转移 INC R6 相等 0 的个数计数器加 1 NEXT INC R0 修改地址指针 DJNZ R7 CONT 计数器减 1 非 0 则继续 MOV 50H R6 保存 O 的个数计数值到 50H 单元 SJMP 暂停 END END 6 已知 A 83H R0 17H 17H 34H 写出下列程序段执行之后的 A 中的内容 ANL A 17H ORL 17H A XRL A R0 CPL A END 答 ANL A 17H A 03H ORL 17H A 17H 0011 0100 0000 0011 0011 0111 XRL A R0 A 0000 0011 0011 0111 0011 0100 CPL A A 1100 1011 7 已知单片机的晶振频率为 12MHz 分别设计延时为 0 1s 1s 的子程序 答 已知单片 机的晶振频率为 12MHz 则机器周期为 1us 延时子程序是通过执行指令序列中机器周期数来达 到 如果要 0 1s 即 100ms 也就是 100000us 所以需要机器周期数达到 100000 要延时 达到 1S 可通过对延时为 0 1 秒的子程序调用 10 次来实现 DELAY100MS MOV R6 200 1 个机器周期 D1 MOV R7 250 1 个机器周期 D2 NOP 1 个机器周期 DJNZ R7 D2 2 个机器周期 3 251 753 DJNZ R6 D1 2 个机器周期 1 753 2 132 99792 RET 2 个机器周期 1 99792 2 99795 约 100ms DELAY1S MOV R7 10 计数 10 次 1 LOOP ACALL DELAY100MS 延时 100ms 子程序 99795 2 DJNZ R7 LOOP 未达到 10 次则继续 10 2 99795 2 RET 返回 2 10 2 99795 2 997992 8 内部 RAM 从 20H 单元开始处有一数据块 以 ODH 为结束标志 试统计该数据块的长度 将该数据块送到外部数据存储器 7E01H 开始的单元 并将长度存入 7E00H 单元 解 从 20H 的指针用 R0 从外部 RAM7E01 开始的指针用 DPTR 计数器用 R7 MOV R7 0 字节计数器赋初值 MOV R0 20H 设片内 RAM 地址指针初值 MOV DPTR 7E01H 设片外 RAM 地址指针初值 CONT MOV A R0 取片内 RAM 中的一个字节 MOVX DPTR A 存入片外 RAM 指针所指单元 INC R7 长度计数器加 1 INC R0 片内 RAM 地址指针加 1 INC DPTR 片外 RAM 地址指针加 1 CJNE A 0DH CONT 未达到结束标志 MOV A R7 取块计数长度值 MOVX DPTR A 保存 SJMP 暂停 END 9 内部 RAM 从 DATA 开始的区域中存放着 10 个单字节十进制数 求其累加和 并将结果 存入 SUM 和 SUM 1 单元 解 R7 计数 R6 保存累加和高 8 位 R0 用作地址指针 ORG 0000H LJMP MAIN ORG 100H SUM EQU 30H DATAA EQU 40H MAIN MOV R7 10 字节计数器赋初值 MOV R0 DATAA 设片内 RAM 地址指针初值 CLR A 累加器清 0 MOV R6 A 累加结果的高 8 位 CONT ADD A R0 加 RAM 中的一个字节到 ACC DA A JNC NEXT 若无进位则不用管高 8 位 INC R6 有进位 高 8 位加 1 NEXT INC R0 片内 RAM 地址指针加 1 DJNZ R7 CONT 未完继续 MOV SUM A 保存低 8 位 MOV SUM 1 R6 保存高 8 位 SJMP 暂停 END 10 内部 RAM 从 DATA1 和 DATA2 单元开始处存放着两个等长的数据块 数据块的长度 在 LEN 单元中 请编程检查这两个数据块是否相等 若相等 将 0FFH 写入 RESULT 单元 否则 将 0 写入 RESULT 单元 解 从 DATA1 开始的指针用 R0 从 DATA2 开始的指针用 R1 计数器用 R7 LEN EQU 10 DATA1 EQU 30H DATA2 EQU 40H RESULT EQU 50H MOV R7 LEN 字节计数器赋初值 MOV R0 DATA1 设片内 RAM 地址指针初值 MOV R1 DATA2 设片外 RAM 地址指针初值 CONT MOV A R0 取片内 RAM R0 所指的的一个字节 MOV 7FH R1 将 R1 所指单元内容取到片内 RAM 地址 7FH 中 CJNE A 7FH NOEQ 比较 不相等则结束 INC R0 DATA1 RAM 地址指针加 1 INC R1 DATA2 RAM 地址指针加 1 DJNZ R7 CONT 未完 继续 MOV A 0FFH 相等 准备写入 FFH SJMP DOWN 转写入结果处 NOEQ MOV A 0 不相等 准备写入 00H DOWN MOV RESULT A 保存比较结果标志 SJMP 暂停 END 11 编制程序 将内部 RAM 中 M1 M2 M3 和 M4 单元中的无符号数 xl x2 x3 和 x4 相加 并把和存入 RO 和 R1 R0 中为高 8 位 中 解 M1 EQU 30H M2 EQU 40H M3 EQU 45H M4 EQU 4FH MOV A M1 取第一个数 ADD A M2 与第二个数相加 JNC NEXT1 如果无进位 则转移至第三个相加 MOV R0 1 有进位 高 8 位置 1 NEXT1 ADD A M3 与第三个数相加 JNC NEXT2 没有进位 则转至第四个数相加 INC R0 有进位 高 8 位加 1 NEXT2 ADD A M4 与第四个数相加 JNC NEXT3 没有进位 则转至结束 INC R0 有进位 高 8 位再加 1 NEXT3 MOV R1 A 低 8 位保存到 R1 SJMP 暂停 END 第 4 章 单片机的 C51 语言 习题 1 C 语言的优点是什么 C 程序的主要结构特点是什么 答 C 语言是一种高级语言 学习比低级容易 不需要具体组织 分配存储器资源和处理端口 数据 可以直接驱动单片机的所有资源 C 程序以函数为单位 由一个主函数和若干个其他函数构成 主函数是程序的入口 其他函数 由主函数直接或间接调用 程序可以由一个文件或多个文件组成 文件类型包括头文件和 C 语言源 文件 也可以是汇编语言文件 C 程序可与汇编语言混合编程 2 C51 语言的变量定义包含哪些关键因素 为何这样考虑 答 C 语言的变量定义格式如下 存储种类 数据类型 存储类型 变量名 其中 存储种类与标准 C 语言相同 包括 自动型 auto 外部型 extern 静态型 static 寄存 器型 register 数据类型除了包含标准 C 语言类型的字符型 char 整型 int 长整型 long 浮点型 float 双精度型 double 外 还有二进制位型 bit 特殊功能寄存器型 sfr SFR 可位寻址的位类型 sbit 存储类型包括 片内 RAM 区 data 片内可位寻址区 bdata 片内 RAM 间接寻址区 idata 片外 RAM 页寻址区 pdata 片外 RAM 区 xdata ROM 区 code 只所以比标准 C 语言多了存储类型 就是因为 MCS 51 单片机的存储结构中有四个物理存储 空间 片内 RAM 片内 ROM 片外 RAM 片外 ROM 三个逻辑地址空间 片内 RAM 片外 RAM ROM 而且有多种寻址方式 直接寻址 间接寻址 页面寻址 位寻址 所致 所以在定 义变量时 要根据其所在位置和寻址方式明确指定存储类型 3 C51 与汇编语言的特点各有哪些 怎样实现两者的优势互补 答 C51 是结构化语言 代码紧凑 接近自然语言 程序可读性强 易于调试 维护 库函数 丰富 编程工作量小 可使产品开发周期短 具有机器级控制能力 功能很强 适合于嵌入式系统 开发 汇编指令无关 易于掌握 上手快 汇编语言优点是编写的程序代码精炼 执行速度快 在相同功能下 汇编语言程序可能比 C 语 言程序效率高 缺点是对程序员要求高 必须对单片机的硬件结构非常熟悉才能编程 不便于编写 比较复杂的程序 可根据需要对要求时间性很强的代码用汇编语言编写 其它部分用 C 语言编写 两者混合编程 就可以实现优势互补 4 指出下面程序的语法错误 include main a C int a 7 C delay 10 void delay cgar i for i O i 255 答 include main a C a 和 C 必须先定义才可使用 int a 7 C 缺分号 应该提在使用前说明 delay 10 延时子程序必须先定义 或先有函数原型说明 void delay 作为函数定义 有函数定义不能嵌套的问题 即不能在一个函数内定义另一个函数 而且 前不应有分号 作为函数原型说明 应该放在函数调用之前 且其后不应该接函数体 cgar i 字符型应该是 unsigned char for i O i 255 应改成 i 主函数没有结束 缺 5 定义变量 a b c 其中 a 为内部 RAM 的可位寻址区的字符变量 b 为外部数据存储区浮 点型变量 c 为指向 int 型 xdata 区的指针 答 char bdata a float xdata b int xdata c 6 编程将 8051 的内部数据存储器 20H 单元和 35H 单元的数据相乘 结果存到外部数据 存储器中 任意位置 解 方法一 用嵌入式汇编语言实现 include void main pragma asm MOV A 20H MOV B 35H MUL AB MOV DPTR 1234H MOVX DPTR A INC DPTR MOV A B MOVX DPTR A pragma endasm 方法二 单用 C 语言编程实现 include include int movdata char void main unsigned int xdata x unsigned char ptr a b ptr 0 x25 a ptr ptr 0 x30 b ptr x a b 7 8051 的片内数据存储器 25H 单元中存放有一个 0 10 的整数 编程求其平方根 精确 到 5 位有效数字 将平方根放到 30H 单元为首址的内存中 解 方法一 用 C 语言与汇编语言混合编程实现 用 C 语言编写的主函数 MAIN C include include char getdata char void main char a 0 x25 c float f c getdata a f sqrt c 用汇编语言编写的取数据子函数 只有一个地址参数在 R7 中 返回值为指定地址单元中的内 容 用 R7 返回主函数 PUBLIC GETDATA DE SEGMENT CODE RSEG DE GETDATA MOV A R7 取地址参数 MOV R0 A MOV A R0 MOV R7 A 返回地址单元中的内容 EXIT RET END 方法二 单用 C 语言编程实现 MAIN C include include int movdata char void main char n char ptr float ptr2 float f ptr 0 x25 n ptr f sqrt n ptr2 0 x30 ptr2 f 8 将外部 RAM 10H 15H 单元的内容传送到内部 RAM 10H 15H 单元 解 方法一 采用 C 语言与汇编语言混合编程 用 C 语言编写的主函数 MAIN C include char movdata char char void main char a 0 x10 b 0 x06 movdata a b 用汇编语言编写的移动数据子函数 MOVDATA 其中第一个参数在 R7 中为首地址 第二个 参数在 R5 中为字节数 PUBLIC MOVDATA DE SEGMENT CODE RSEG DE MOVDATA MOV A R7 取参数 MOV R0 A LOOP MOVX A R0 MOV R0 A DJNZ R5 LOOP EXIT RET END 方法二 单用 C 语言编程实现 MAIN C include int movdata char void main char n 6 char ptr1 0 x10 char xdata ptr2 ptr2 0 x20 while n ptr2 ptr1 9 内部 RAM 20H 21H 和 22H 23H 单元分别存放着两个无符号的 16 位数 将其中的 大数置于 24H 和 25H 单元 解 方法一 include void main unsigned int ptr 设置一个内部 RAM 指针 unsigned int x y z ptr 0 x20 指向 0 x20 单元 x ptr 取第一个数 ptr 0 x22 指向 0 x22 单元 y ptr 取第二个数 z x y x y 将两数中的较大者赋给 z ptr 0 x24 指向地址为 0 x24 的目标单元 ptr z 将大数存入目标单元 方法二 include include void main unsigned int x y z x DBYTE 0X20 256 DBYTE 0X21 y DBYTE 0X22 256 DBYTE 0X23 z x y x y 将两数中的较大者赋给 z DBYTE 0X24 z 256 DBYTE 0X25 z 256 方法三 include unsigned int x at 0 x20 unsigned int y at 0 x22 unsigned int z at 0 x24 void main z x y x y 第 4 章 单片机的 C51 语言 习题 1 C 语言的优点是什么 C 程序的主要结构特点是什么 答 C 语言是一种高级语言 学习比低级容易 不需要具体组织 分配存储器资源和处理端口 数据 可以直接驱动单片机的所有资源 C 程序以函数为单位 由一个主函数和若干个其他函数构成 主函数是程序的入口 其他函数 由主函数直接或间接调用 程序可以由一个文件或多个文件组成 文件类型包括头文件和 C 语言源 文件 也可以是汇编语言文件 C 程序可与汇编语言混合编程 2 C51 语言的变量定义包含哪些关键因素 为何这样考虑 答 C 语言的变量定义格式如下 存储种类 数据类型 存储类型 变量名 其中 存储种类与标准 C 语言相同 包括 自动型 auto 外部型 extern 静态型 static 寄存 器型 register 数据类型除了包含标准 C 语言类型的字符型 char 整型 int 长整型 long 浮点型 float 双精度型 double 外 还有二进制位型 bit 特殊功能寄存器型 sfr SFR 可位寻址的位类型 sbit 存储类型包括 片内 RAM 区 data 片内可位寻址区 bdata 片内 RAM 间接寻址区 idata 片外 RAM 页寻址区 pdata 片外 RAM 区 xdata ROM 区 code 只所以比标准 C 语言多了存储类型 就是因为 MCS 51 单片机的存储结构中有四个物理存储 空间 片内 RAM 片内 ROM 片外 RAM 片外 ROM 三个逻辑地址 空间 片内 RAM 片外 RAM ROM 而且有多种寻址方式 直接寻址 间接寻址 页面寻址 位寻址 所致 所以在定义变量时 要根据其所在位置和寻址方式明确指定存储类型 3 C51 与汇编语言的特点各有哪些 怎样实现两者的优势互补 答 C51 是结构化语言 代码紧凑 接近自然语言 程序可读性强 易于调试 维护 库函数 丰富 编程工作量小 可使产品开发周期短 具有机器级控制能力 功能很强 适合于嵌入式系统 开发 汇编指令无关 易于掌握 上手快 汇编语言优点是编写的程序代码精炼 执行速度快 在相同功能下 汇编语言程序可能比 C 语 言程序效率高 缺点是对程序员要求高 必须对单片机的硬件结构非常熟悉才能编程 不便于编写 比较复杂的程序 可根据需要对要求时间性很强的代码用汇编语言编写 其它部分用 C 语言编写 两者混合编程 就可以实现优势互补 4 指出下面程序的语法错误 include main a C int a 7 C delay 10 void delay cgar i for i O i 255 答 include main a C a 和 C 必须先定义才可使用 int a 7 C 缺分号 应该提在使用前说明 delay 10 延时子程序必须先定义 或先有函数原型说明 void delay 作为函数定义 有函数定义不能嵌套的问题 即不能在一个函数内定义另一个函数 而且 前不应有分号 作为函数原型说明 应该放在函数调用之前 且其后不应该接函数体 cgar i 字符型应该是 unsigned char for i O i 255 应改成 i 主函数没有结束 缺 5 定义变量 a b c 其中 a 为内部 RAM 的可位寻址区的字符变量 b 为外部数据存储区浮 点型变量 c 为指向 int 型 xdata 区的指针 答 char bdata a float xdata b int xdata c 6 编程将 8051 的内部数据存储器 20H 单元和 35H 单元的数据相乘 结果存到外部数据 存储器中 任意位置 解 方法一 用嵌入式汇编语言实现 include void main pragma asm MOV A 20H MOV B 35H MUL AB MOV DPTR 1234H MOVX DPTR A INC DPTR MOV A B MOVX DPTR A pragma endasm 方法二 单用 C 语言编程实现 include include int movdata char void main unsigned int xdata x unsigned char ptr a b ptr 0 x25 a ptr ptr 0 x30 b ptr x a b 7 8051 的片内数据存储器 25H 单元中存放有一个 0 10 的整数 编程求其平方根 精确 到 5 位有效数字 将平方根放到 30H 单元为首址的内存中 解 方法一 用 C 语言与汇编语言混合编程实现 用 C 语言编写的主函数 MAIN C include include char getdata char void main char a 0 x25 c float f c getdata a f sqrt c 用汇编语言编写的取数据子函数 只有一个地址参数在 R7 中 返回值为指定地址单元中的内 容 用 R7 返回主函数 PUBLIC GETDATA DE SEGMENT CODE RSEG DE GETDATA MOV A R7 取地址参数 MOV R0 A MOV A R0 MOV R7 A 返回地址单元中的内容 EXIT RET END 方法二 单用 C 语言编程实现 MAIN C include include int movdata char void main char n char ptr float ptr2 float f ptr 0 x25 n ptr f sqrt n ptr2 0 x30 ptr2 f 8 将外部 RAM 10H 15H 单元的内容传送到内部 RAM 10H 15H 单元 解 方法一 采用 C 语言与汇编语言混合编程 用 C 语言编写的主函数 MAIN C include char movdata char char void main char a 0 x10 b 0 x06 movdata a b 用汇编语言编写的移动数据子函数 MOVDATA 其中第一个参数在 R7 中为首地址 第二个 参数在 R5 中为字节数 PUBLIC MOVDATA DE SEGMENT CODE RSEG DE MOVDATA MOV A R7 取参数 MOV R0 A LOOP MOVX A R0 MOV R0 A DJNZ R5 LOOP EXIT RET END 方法二 单用 C 语言编程实现 MAIN C include int movdata char void main char n 6 char ptr1 0 x10 char xdata ptr2 ptr2 0 x20 while n ptr2 ptr1 9 内部 RAM 20H 21H 和 22H 23H 单元分别存放着两个无符号的 16 位数 将其中的 大数置于 24H 和 25H 单元 解 方法一 include void main unsigned int ptr 设置一个内部 RAM 指针 unsigned int x y z ptr 0 x20 指向 0 x20 单元 x ptr 取第一个数 ptr 0 x22 指向 0 x22 单元 y ptr 取第二个数 z x y x y 将两数中的较大者赋给 z ptr 0 x24 指向地址为 0 x24 的目标单元 ptr z 将大数存入目标单元 方法二 include include void main unsigned int x y z x DBYTE 0X20 256 DBYTE 0X21 y DBYTE 0X22 256 DBYTE 0X23 z x y x y 将两数中的较大者赋给 z DBYTE 0X24 z 256 DBYTE 0X25 z 256 方法三 include unsigned int x at 0 x20 unsigned int y at 0 x22 unsigned int z at 0 x24 void main z x y x y 第 5 章 单片机的中断系统 习题 1 什么是中断 中断源 中断优先级和中断嵌套 答 中断是指单片机内部有一个中断管理系统 它对内部的定时器事件 串行通信的发送和接 收及外部事件 如键盘按键动作 等进行自动的检测判断 当 CPU 正在处理某件事情 例如正在执 行主程序 的时候 外部或内部发生的某一事件 如某个引脚上电平的变化 一个脉冲沿的发生或 计数器的计数溢出等 请求 CPU 迅速处理 于是 中断管理系统会置位相应标志通知 CPU 暂时中 止当前的工作 迅速转去处理所发生的事件 处理完该事件后 再回到原来被中止的地方 继续原 来的工作 这样的过程称为中断 引发中断的事件称为中断源 将中断事件按轻重缓急分若干级别叫中断优先级 允许中断优先级高的中断源中断正在执行的低优先级的中断服务程序叫中断嵌套 2 什么叫中断源 MCS 51 有哪些中断源 各有什么特点 它们的中断向量地址分别是多少 答 中断源即引发中断的事件 MCS 51 单片机有 5 个中断源 它们是外部中断 0 定时器 T0 外部中断 1 定时器 T1 串行口 外部中断源是由引脚的触发信号引起的中断 定时器中断源是由于定时器计数器的溢出引发的 中断 串行口是由于串行通信的发送或接收引发的中断 外部中断 0 定时器 T0 外部中断 1 定时器 T1 串行口五个中断源的中断向量地址依次为 0003H 000BH 0013H 001BH 0023H 3 MCS 51 中断的中断响应条件是什么 答 1 中断源有中断请求 2 此中断源允许位为 1 即中断源可以向 CPU 发中断请求 3 CPU 开总中断 即 EA 1 4 无同级或者更高级中断正在服务 4 MCS 51 的中断响应过程是怎样的 答 1 将相应的中断优先级状态触发器置 1 以阻断后来的同级和低级中断请求 2 由硬件清除相应的中断请求标志 串行口的发送和接收中断除外 3 执行一条硬件 LCALL 指令 即把程序计数器 PC 的内容压入堆栈保存 再将相应的中断 服务程序的入口地址送入 PC 5 编写出外部中断 1 为下跳沿触发的中断初始化程序 解 void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南堤灌维护工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北水文勘测工四级(中级工)历年参考题库典型考点含答案解析
- 2025年老年教育课程改革与多元化教学模式研究报告
- 2025年事业单位工勤技能-湖北-湖北垃圾清扫与处理工二级(技师)历年参考题库典型考点含答案解析
- 2025-2030中国纸浆模塑行业运营形势与发展规划分析报告
- 2025年互联网金融平台合规整改与金融科技监管的合规认证与可持续发展报告
- 2025-2030中国红外耳机行业消费状况与营销前景预测报告
- 2025年事业单位工勤技能-浙江-浙江铸造工三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江广播电视天线工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏环境监测工四级(中级工)历年参考题库含答案解析(5套)
- 校园基孔肯雅热防控措施课件
- (2025年标准)离职手协议书
- 2025年团场人员考试题库
- 班组质量管理
- 2025年四川省建筑施工企业安管人员考试(企业主要负责人·A类)历年参考题库含答案详解(5卷)
- 实战能力评估模型-洞察及研究
- 超声引导髂筋膜阻滞技术
- 铁路建设工程质量安全监督管理办法
- 数字经济与市场结构-洞察及研究
- DB42T 1496-2019 公路边坡监测技术规程
- 学校餐厅试吃活动方案
评论
0/150
提交评论