飞思卡尔单片机复习题
飞思卡尔单片机各种问题汇结
飞思卡尔问题汇结一、flash/EEPROM的操作Tips:a、HC08系列MCU中,很多Monitor ROM中固化了对flash操作的函数,用户只需调用即可,参考AN2874等应用笔记b、HCS08系列和HCS12系列MCU对flash的操作十分类似,可以参考 AN21401、FLASH操作函数 (HCS08系列)/dispbbs.asp?boardID=3&RootID=111907&ID= 1119072、如何将flash中的程序copy至ram中/dispbbs.asp?boardID=3&RootID=104074&ID= 1040743、S12内部寄存器的映射/dispbbs.asp?boardID=3&RootID=103261&ID= 1032614、S12EEPROM的使用、 INITRG,INITRM,INITEE寄存器的说明/dispbbs.asp?boardID=3&RootID=102260&ID= 1022605.INITRM寄存器的使用/dispbbs.asp?boardID=3&RootID=103214&ID= 103214二、编程技巧Tips:a、一般Codewarrior用引导生成工程的话,器件的头文件中都定义好了各个位,C语言编程只需找到对应的位进行操作即可b、用户自定义变量进行位操作,可以参考Codewarrior的格式1、CW位操作定义结构/dispbbs.asp?boardID=3&RootID=87784&ID=8 77842、HCS08系列单片机软件复位/dispbbs.asp?boardID=3&RootID=112903&ID= 112903三、Codewarrior 的使用Tips:a、尽量采用最新版本的CW进行编译开发b、尽量采用引导创建工程1、C语言和汇编语言之间共用常量/dispbbs.asp?boardID=3&RootID=101651&ID= 1016512、编译出现L1923 no DWARF debug info警告信息/dispbbs.asp?boardid=3&rootid=108124&id= 108124&star=四、ZigbeeTips:a、/zigbee 该网站中有freescale在zigbee方面的资料五、芯片各个模块的使用ADC1、序列通道AD转换/dispbbs.asp?boardID=3&RootID=80853&ID=8 08532、AD左右对齐/dispbbs.asp?boardID=3&RootID=83010&ID=8 3010PWM1、MON08调试PWM的注意事项/dispbbs.asp?boardID=3&RootID=33087&ID=3 30872、关于PWM的一篇好文章(网友推荐)/dispbbs.asp?boardID=3&RootID=43413&ID=4 34133、DSP56F8346的PWM程序/dispbbs.asp?boardID=3&RootID=59802&ID=5 98024、S12DG128B的PWM程序/dispbbs.asp?boardID=3&RootID=76420&ID=7 6420CAN1.9S08DZ CANdemo程序/dispbbs.asp?boardID=3&RootID=113744&ID= 113744RTI1.stop模式下,唤醒MCU(S12XDP512)/dispbbs.asp?boardID=3&RootID=115287&ID= 115287六调试工具Tips:a. HC08系列MCU的调试接口为MON08,用MON08 Multilinkb. HCS08、RS08和HCS12系列内置BDM模块,用BDM Multilinkc. 上述调试工具都是P&E公司提供的,另外该公司的Cyclone Pro 支持HC08/HCS08/HCS12系列MCU的调试。
单片机考试题目及答案
单片机考试题目及答案一、选择题(每题2分,共20分)1. 单片机是一种集成了CPU、存储器、I/O接口等功能的微型计算机,其英文缩写是:A. CPUB. RAMC. ROMD. MCU答案:D2. 下列哪个是51系列单片机的特有寄存器?A. ACCB. PSWC. SPD. PC答案:B3. 在8051单片机中,以下哪个指令是用于将累加器A的内容与外部数据存储器中的数据进行交换?A. MOV A, @DPTRB. MOVX A, @DPTRC. MOV DPTR, #20HD. MOV A, #20H答案:B4. 8051单片机的定时器/计数器0和1,其定时器模式下的工作方式有:A. 1种B. 2种C. 3种D. 4种答案:C5. 下列哪个中断源在8051单片机中具有最高优先级?A. 定时器0中断B. 外部中断0C. 定时器1中断D. 串行中断答案:B二、填空题(每空2分,共20分)1. 单片机的最小系统通常包括________、________和________。
答案:时钟电路、复位电路、电源电路2. 8051单片机的P0口是________位的双向I/O口。
答案:83. 8051单片机的中断向量地址是固定的,其中外部中断0的中断向量地址是________。
答案:03H4. 8051单片机的定时器0和定时器1都可以被配置为________模式,用于计数外部事件。
答案:计数器5. 在8051单片机中,使用MOV指令可以实现寄存器之间的数据传输,例如MOV A, R0,表示将________的数据传送到________。
答案:R0寄存器;累加器A三、简答题(每题10分,共30分)1. 请简述单片机的中断系统的作用及其重要性。
答案:单片机的中断系统允许单片机在执行程序的过程中,对外部事件或内部条件做出快速响应。
中断系统的重要性在于它能够实现多任务处理,提高系统的实时性和效率。
2. 描述8051单片机的串行通信方式及其特点。
单片机考试试题和答案
单片机考试试题和答案一、选择题(每题2分,共20分)1. 单片机是指()。
A. 单芯片微型计算机B. 单芯片微处理器C. 单芯片微控制器D. 单芯片微电脑答案:C2. 8051单片机的程序存储器和数据存储器的地址空间各是多少?()A. 64KB,64KBB. 64KB,128KBC. 128KB,64KBD. 64KB,256KB答案:C3. 8051单片机的外部中断有()个。
A. 1B. 2C. 3D. 4答案:B4. 8051单片机的定时器/计数器有几个?()A. 1B. 2C. 3D. 4答案:B5. 8051单片机的串行通信可以工作在()种方式。
A. 2B. 3C. 4D. 5答案:C6. 8051单片机的I/O口是()。
A. 准双向口B. 推挽输出C. 漏极开路D. 集电极开路答案:A7. 8051单片机的看门狗定时器是()。
A. 定时器0B. 定时器1C. 定时器2D. 定时器3答案:C8. 8051单片机的外部中断0的中断向量地址是()。
A. 0003HB. 0013HC. 0023HD. 0033H答案:B9. 8051单片机的外部中断1的中断向量地址是()。
A. 0003HB. 0013HC. 0023HD. 0033H答案:D10. 8051单片机的串行通信的波特率可以通过定时器()来设置。
A. 0B. 1C. 2D. 3答案:B二、填空题(每题2分,共20分)1. 8051单片机的内部RAM共有______字节。
答案:1282. 8051单片机的外部中断0的优先级高于外部中断1的优先级。
答案:错误3. 8051单片机的定时器0和定时器1可以工作在______模式。
答案:16位4. 8051单片机的看门狗定时器的溢出时间是______。
答案:1.085秒5. 8051单片机的串行通信可以工作在8位可变波特率模式。
答案:正确6. 8051单片机的I/O口P1.0和P1.1可以作为______使用。
单片机考试题目及答案
单片机考试题目及答案一、选择题(每题2分,共10分)1. 单片机的CPU主要由哪几个部分组成?A. 运算器和控制器B. 存储器和输入输出设备C. 运算器、控制器和存储器D. 运算器、控制器和输入输出设备答案:A2. 下列哪项不是单片机的存储器?A. ROMB. RAMC. EPROMD. CD-ROM答案:D3. 8051单片机的定时器/计数器有几个?A. 1个B. 2个C. 3个D. 4个答案:B4. 8051单片机的中断系统有几个中断源?A. 5个B. 6个C. 7个D. 8个答案:C5. 8051单片机的外部中断有几个?A. 1个B. 2个C. 3个D. 4个答案:B二、填空题(每空1分,共10分)1. 单片机的全称是_________。
答案:微控制器单元2. 8051单片机的内部RAM共有_________字节。
答案:1283. 8051单片机的外部中断有_________和_________两个。
答案:INT0,INT14. 8051单片机的定时器/计数器可以工作在_________、_________和_________三种模式。
答案:模式0,模式1,模式25. 8051单片机的串行通信可以工作在_________和_________两种方式。
答案:同步,异步三、简答题(每题10分,共20分)1. 简述单片机的工作原理。
答案:单片机的工作原理基于程序存储和程序执行。
程序存储在单片机的ROM中,CPU按照程序存储器中的指令序列执行操作。
CPU从程序存储器中取出指令,解码后执行相应的操作,如数据处理、控制输入输出等。
执行完毕后,CPU再取出下一条指令,如此循环,直至程序结束或遇到中断。
2. 描述8051单片机的中断响应过程。
答案:当8051单片机的中断请求信号被激活时,CPU首先完成当前的机器周期,然后检查中断允许寄存器,确定是否有允许的中断请求。
如果有,CPU将当前程序计数器的值压入堆栈,然后根据中断向量表跳转到相应的中断服务程序。
(完整版)单片机复习题(附答案、)
单片机复习题(仅供参考)任务一1.十进制数126对应的十六进制可表示为 D 。
A.8F B.8E C.FE D.7E2.二进制数110010010对应的十六进制数可表示为 A 。
A.192H B.C90H C.1A2H D.CA0H3.计算机内部的数据之所以用二进制的形式表示,主要是 B 。
A.为了编程方便B.由于受器件的物理性能限制C.为了通用性D.为了提高运算速度4.计算机主要的组成成分为 B 。
A.CPU 、内存、I/O口B.CPU 、键盘、显示器C.主机、外部设备D.以上都是5.CPU主要的组成成分为 C 。
A.运算器、控制器B.加法器、寄存器C.运算器、寄存器D.运算器、指令译码器6.以下不是构成单片机的部件 DA.微处理器B.存储器C.I/O接口电路D.打印机7.89C51的CPU是 C 的单片机A.16 B.4 C.8 D.准168.AT89C51单片机的字长是 C 位。
A.32 B.16 C. 8 D. 49.程序计数器PC用来 B 。
A.存放指令B.存放下一条的指令地址C.存放正在执行的指令地址D.存放上一条的指令地址10.当标志寄存器PSW的RS0和RS1分别为0和1时,系统选用的工作寄存器组为 C 。
A.组1 B.组3 C.组2 D.组011.进位标志Cy在 C 中。
A.累加器B.算术逻辑运算单元ALUC.程序状态字寄存器PSW D.PC中12.指令和程序是以 C 形式存放在程序存储器中。
A.源程序B.汇编程序C.二进制编码D.BCD码13.单片机应用程序一般存放在 B 。
A.RAM B.ROM C.CPU D.寄存器14.51单片机中专用寄存器( B )用来存放下一条待执行的指令地址。
A.ACC B.PC C.PSW D.DPTR15.AT89C51单片机有片内的ROM容量 AA.4KB B. 8KB C. 00H-1FH D.20-2FH16.89C51片内的Ram共有B 字节。
单片机复习题库(含答案)
单片机复习题库(含答案)单片机复习题库(含答案)一、单选题1. 下面哪个不是单片机的特点?A. 集成度高B. 执行速度快C. 操作简便D. 存储容量大答案:D2. 在单片机的复位电路中,常用的复位方式是:A. 程序复位B. 硬件复位C. 软件复位D. 手动复位答案:B3. 单片机中断的触发方式有以下哪几种?A. 内部触发B. 外部触发C. 软件触发D. 手动触发答案:A、B、C4. 单片机中的位操作指令是指对数据的哪一部分进行操作?A. 高字节B. 低字节C. 位D. 字节答案:C5. 单片机工作模式中,可以通过设置谁来控制单片机工作状态?A. 硬件B. 软件C. 中断D. 外部信号答案:B二、判断题1. 单片机的外部中断一般需要使用外部中断触发器。
答案:错2. 单片机的I/O口可以设置为输入、输出或者双向。
答案:对3. 单片机的Flash存储器是一种非易失性存储器。
答案:对4. 单片机的片内RAM存储器可以直接运行程序。
答案:对5. 单片机的位操作指令是指对数据的整个字节进行操作。
答案:错三、填空题1. 单片机的中断向量表一般存储在()中。
答案:ROM2. 单片机的外部中断触发方式可以选择为()或者()。
答案:上升沿触发、下降沿触发3. 单片机的位操作指令是通过()实现对数据位的读、写或者置位等操作。
答案:位地址4. 单片机的运算指令可以对()进行算术运算或者逻辑运算。
答案:寄存器中的数据5. 单片机的GPIO口是指()。
答案:通用输入输出口四、简答题1. 请简要解释单片机的中断工作原理。
答案:单片机在执行程序的过程中,可以根据外部或者内部的中断请求来暂停当前的工作,转而执行中断服务程序。
当中断请求触发时,单片机会保存当前的程序计数器和其它寄存器的状态,然后跳转到对应的中断服务程序。
该程序处理完中断事件后,再返回到原来的程序继续执行。
通过中断,可以提高单片机的响应速度和处理能力。
2. 请简要说明单片机的I/O口使用方法。
单片机期末考试复习题及答案
单⽚机期末考试复习题及答案⼀、选择题(每题1分,共10分)1.8031单⽚机的( D )⼝的引脚,还具有外中断、串⾏通信等第⼆功能。
a)P0 b)P1 c)P2 d)P32.单⽚机应⽤程序⼀般存放在( B )a)RAM b)ROM c)寄存器 d)CPU3.已知某数的BCD码为0111 0101 0100 0010 则其表⽰的⼗进制数值为(B )a)7542H b)7542 c)75.42H d)75.424.下列指令中不影响标志位CY的指令有(D )。
a)ADD A,20H b)CLR c)RRC A d)INC A5.CPU主要的组成部部分为( A )a)运算器、控制器 b)加法器、寄存器c)运算器、寄存器 d)运算器、指令译码器6.INTEL 8051 CPU是( C )位的单⽚机a)16 b)4 c)8 d)准167.8031复位后,PC与SP的值为( B )a )0000H,00H b)0000H,07H c)0003H,07H d)0800H,00H8.当需要从MCS-51单⽚机程序存储器取数据时,采⽤的指令为(B)。
a)MOV A, @R1 b)MOVC A, @A + DPTRc)MOVX A, @ R0 d)MOVX A, @ DPTR9.8031单⽚机中既可位寻址⼜可字节寻址的单元是( A )a)20H b)30H c)00H d)70H10.下列哪条指令是正确的( D )a)PUSH R2 b)ADD R0,Ac)MOVX A @DPTR d)MOV @R0,A⼆、填空题(每空1分,共30分)1.⼀个完整的微机系统由硬件和软件两⼤部分组成。
2.8051 的引脚RST是_IN_(IN脚还是OUT脚),当其端出现_⾼_电平时,8051进⼊复位状态。
8051⼀直维持这个值,直到RST脚收到_低_电平,8051才脱离复位状态,进⼊程序运⾏状态,从ROM 0000 H单元开始取指令并翻译和执⾏。
单片机复习题及答案
单片机复习题及答案一、选择题1、单片机能够直接运行的程序是()。
A 汇编语言源程序BC 语言源程序 C 高级语言程序D 机器语言程序答案:D解析:单片机只能直接运行机器语言程序,其他语言编写的程序都需要经过编译或解释转换为机器语言程序才能被单片机执行。
2、单片机复位后,程序计数器 PC 的值为()。
A 0000HB 0003HC 000BHD 0013H答案:A解析:单片机复位后,PC 被初始化为 0000H,程序从 0000H 地址开始执行。
3、当 MCS-51 单片机接有外部存储器,P2 口可作为()。
A 数据输入口B 数据输出口C 高 8 位地址口D 低 8 位地址口答案:C解析:P2 口在访问外部存储器时,作为高 8 位地址输出口。
4、要使 MCS-51 能够响应定时器 T1 中断、串行接口中断,它的中断允许寄存器 IE 的内容应是()。
A 98HB 84HC 42HD 22H答案:A解析:IE 寄存器中,ET1 位(定时器 T1 中断允许位)和 ES 位(串行口中断允许位)需要置 1,其他位为 0,对应的二进制值为10011000,即 98H。
5、在 MCS-51 单片机中,需要软件实现中断撤销的是()。
A 定时中断B 外部中断的脉冲方式C 外部中断的电平方式D 串行口中断答案:C解析:外部中断的电平方式需要软件清除中断标志来撤销中断。
二、填空题1、 MCS-51 单片机的内部数据存储器可以分为_____、_____和_____三个区域。
答案:工作寄存器区、位寻址区、数据缓冲区2、单片机的堆栈是在_____中开辟的一个区域,遵循_____的数据存储原则。
答案:内部 RAM、先进后出3、当单片机的晶振频率为 12MHz 时,机器周期为_____μs。
答案:1解析:机器周期= 12 /晶振频率,所以当晶振频率为 12MHz 时,机器周期为1μs。
4、 MCS-51 单片机有_____个中断源,其中外部中断有_____个。
单片机考试题目和答案
单片机考试题目和答案一、单项选择题(每题2分,共20分)1. 单片机的英文缩写是()。
A. CPUB. PCC. PLCD. MCU答案:D2. 8051单片机的振荡器频率为12MHz,机器周期为()。
A. 1μsB. 0.5μsC. 0.1μsD. 2μs答案:B3. 8051单片机的外部中断有()个。
A. 2B. 3C. 4D. 5答案:A4. 8051单片机的定时器/计数器有()个。
A. 1B. 2C. 3D. 4答案:B5. 8051单片机的堆栈指针SP的初值是()。
A. 0x00B. 0x07C. 0x7FD. 0xFF答案:C6. 8051单片机的程序存储器和数据存储器的地址范围分别是()。
A. 0000H~FFFFH,0000H~07FHB. 0000H~0FFFH,0000H~07FHC. 0000H~FFFFH,0000H~0FFFHD. 0000H~07FH,0000H~FFFFH答案:B7. 8051单片机的P1口作为输入口使用时,需要()。
A. 外部上拉电阻B. 内部上拉电阻C. 外部下拉电阻D. 内部下拉电阻答案:A8. 8051单片机的P0口作为输入口使用时,需要()。
A. 外部上拉电阻B. 内部上拉电阻C. 外部下拉电阻D. 内部下拉电阻答案:A9. 8051单片机的定时器/计数器工作在方式1时,定时器/计数器的计数初值为()。
A. 0x00B. 0x01C. 0xFFD. 0x80答案:D10. 8051单片机的串行通信的波特率可变,其波特率的计算公式为()。
A. 波特率 = 12MHz / 定时器初值B. 波特率 = 12MHz / (定时器初值 × 32)C. 波特率 = 12MHz / (定时器初值 × 64)D. 波特率 = 12MHz / (定时器初值 × 128)答案:B二、填空题(每题2分,共20分)1. 8051单片机的内部RAM共有______字节。
单片机考试试题及答案
单片机考试试题及答案一、选择题(每题2分,共20分)1. 单片机中,CPU的主要功能是()。
A. 存储数据B. 处理数据C. 传输数据D. 显示数据答案:B2. 在8051单片机中,下列哪个寄存器是用于存储程序计数器的地址?A. SPB. PCC. DPTRD. ACC答案:B3. 下列哪项不是单片机的I/O接口?A. 定时器/计数器B. 串行通信接口C. 模数转换器D. 键盘答案:C4. 单片机的中断系统通常由哪两部分组成?A. 中断源和中断服务程序B. 中断向量表和中断服务程序C. 中断向量表和中断源D. 中断源和中断向量表答案:B5. 在8051单片机中,下列哪个指令用于将累加器的内容传送到外部数据存储器?A. MOVXB. MOVC. MOVCD. MUL答案:A二、填空题(每题2分,共20分)1. 单片机的______是单片机的核心部件,负责执行程序。
答案:CPU2. 8051单片机的定时器/计数器共有______个。
答案:23. 在8051单片机中,______指令用于将内部RAM的某个单元的内容传送到累加器。
答案:MOV4. 单片机的______接口用于实现单片机与外部设备的通信。
答案:串行通信5. 单片机的______功能允许它在执行当前任务的同时响应外部事件。
答案:中断三、简答题(每题10分,共30分)1. 请简述单片机的中断优先级是如何工作的?答案:单片机的中断优先级是指在多个中断请求同时发生时,单片机根据中断源的重要性来决定先响应哪一个中断请求。
通常,中断优先级由中断向量表中的地址顺序决定,优先级高的中断源对应的中断向量地址在表中靠前。
2. 描述单片机的I/O接口的作用。
答案:单片机的I/O接口是单片机与外部设备进行数据交换的通道。
它允许单片机接收外部设备的数据输入,并将处理后的数据输出到外部设备。
3. 简述单片机的定时器/计数器的作用。
答案:单片机的定时器/计数器用于提供精确的时间控制和事件计数。
单片机复习题含答案
单片机复习题含答案一、选择题1、单片机是将()、存储器、I/O 接口集成在一块芯片上的微型计算机。
A CPUB 控制器C 运算器D 累加器答案:A解析:单片机是将 CPU、存储器、I/O 接口集成在一块芯片上的微型计算机。
2、单片机复位后,PC 的值为()。
A 0000HB 0003HC 000BHD 0013H答案:A解析:单片机复位后,程序计数器 PC 的值为 0000H,即程序从0000H 开始执行。
3、当单片机的晶振频率为 12MHz 时,一个机器周期为()μs。
A 1B 2C 4D 6答案:A解析:机器周期= 12 /晶振频率。
当晶振频率为 12MHz 时,机器周期= 12 / 12MHz =1μs。
4、 MCS-51 单片机的堆栈区应建立在()。
A 片内数据存储区的低 128 字节单元B 片内数据存储区的高 128 字节单元C 片外数据存储区D 程序存储区答案:A解析:MCS-51 单片机的堆栈区应建立在片内数据存储区的低 128 字节单元,并且遵循“先进后出”的原则。
5、若单片机的定时器/计数器工作在方式 1 下,是()位的定时器/计数器。
A 8B 13C 16D 32答案:C解析:在方式 1 下,单片机的定时器/计数器是 16 位的。
6、在 MCS-51 单片机中,要将 P1 口的高 4 位清零,低 4 位不变,应使用指令()。
A ANL P1,0FHB ORL P1,0FHC XRL P1,0F0HD MOV P1,0FH答案:A解析:ANL 是逻辑与操作,将 P1 与 0FH 进行与操作,即可将高 4 位清零,低 4 位不变。
7、执行 MOV IE,81H 指令的意义是()。
A 屏蔽所有中断B 开放外部中断 0C 开放外部中断 1D 开放外部中断 0 和 1答案:B解析:81H 转换为二进制为 10000001B,对应 IE 寄存器的设置,即开放外部中断 0。
8、在 MCS-51 单片机中,若要访问外部数据存储器,其指令操作码应为()。
单片机考试题目及答案
单片机考试题目及答案一、单项选择题(每题2分,共20分)1. 单片机中,以下哪个寄存器用于存储程序计数器(PC)的值?A. SPB. PCC. DPTRD. SCON答案:B2. 在8051单片机中,下列哪个指令用于将累加器A的内容传送到外部数据存储器?A. MOV A, @R0B. MOVX A, @DPTRC. MOV A, #dataD. MOV A, R0答案:B3. 下列哪个指令是8051单片机的无条件跳转指令?A. SJMPB. CJNEC. DJNZD. JZ答案:A4. 在8051单片机中,以下哪个中断源的中断优先级最高?A. 外部中断0B. 定时器0中断C. 外部中断1D. 串行通讯中断答案:C5. 8051单片机的定时器/计数器工作在方式1时,其计数器的计数范围是多少?A. 0到255B. 0到65535C. 0到32767D. 0到65536答案:C6. 8051单片机中,哪个指令用于将累加器A的内容与立即数进行逻辑“或”操作?A. ORL A, #dataB. ORL A, directC. ORL A, @R0D. ORL direct, #data答案:A器R0的内容进行逻辑“与”操作?A. ANL A, R0B. ANL R0, AC. ANL A, #dataD. ANL direct, A答案:A8. 8051单片机中,哪个指令用于将累加器A的内容与直接地址中的数据进行逻辑“异或”操作?A. XRL A, #dataB. XRL A, directC. XRL direct, AD. XRL A, @R0答案:B器R0的内容进行逻辑“异或”操作?A. XRL A, R0B. XRL R0, AC. XRL A, #dataD. XRL direct, A答案:A10. 8051单片机中,哪个指令用于将累加器A的内容与寄存器R0的内容进行逻辑“与”操作后,结果存回R0?A. ANL A, R0B. ANL R0, AC. ANL A, #dataD. ANL direct, A答案:B二、填空题(每题2分,共20分)1. 8051单片机的内部RAM分为______和______两部分。
单片机复习题含答案
单片机复习题含答案一、选择题1. 单片机是一种集成了CPU、存储器、I/O接口等的微型计算机,其核心是:A. 存储器B. I/O接口C. 中央处理器(CPU)D. 时钟电路答案:C2. 8051单片机的内部RAM地址空间是多少字节?A. 128B. 256C. 512D. 1024答案:B3. 下列哪个不是单片机的中断源?A. 定时器0B. 外部中断0C. 串行通信中断D. 键盘中断答案:D4. 8051单片机的外部数据总线宽度是多少位?A. 4位B. 8位C. 16位D. 32位答案:B5. 单片机编程中,位地址和字节地址的转换关系是什么?A. 位地址 = 字节地址 * 8B. 位地址 = 字节地址 + 1C. 位地址 = 字节地址 / 8D. 位地址 = 字节地址 * 2答案:A二、填空题6. 单片机的最小系统包括________、________和________。
答案:时钟电路、复位电路、电源电路7. 8051单片机的定时器/计数器有________个。
答案:两个8. 单片机的I/O口可以配置为________模式或________模式。
答案:推挽输出、开漏输出9. 8051单片机的外部中断INT0和INT1的优先级是________高于________。
答案:INT0、INT110. 单片机的程序存储器和数据存储器是________的。
答案:分开的三、简答题11. 简述单片机的中断处理流程。
答案:单片机的中断处理流程通常包括以下步骤:1) 中断请求;2) 中断响应;3) 中断服务程序的执行;4) 中断返回。
12. 8051单片机的堆栈的作用是什么?答案:堆栈用于存储中断服务程序或子程序调用时的现场信息,包括返回地址和某些寄存器的内容,以便中断或子程序执行完毕后能够恢复到被中断或调用前的状态。
四、计算题13. 假设8051单片机的时钟频率为12MHz,计算定时器0的1ms定时周期的初始值。
单片机期末复习题答案
单片机期末复习题答案一、选择题1. 单片机的全称是()。
A. 单片计算机B. 单片集成电路C. 单片微处理器D. 单片微控制器答案:D2. 8051单片机的内部RAM的容量是()。
A. 256字节B. 128字节C. 512字节D. 1024字节答案:A3. 下列哪个寄存器是8051单片机的程序计数器()。
A. PCB. SPC. DPTRD. ACC答案:A4. 8051单片机的外部中断有()个。
A. 2B. 3C. 4D. 5答案:A5. 8051单片机的定时器/计数器有()个。
A. 1B. 2C. 3D. 4答案:B二、填空题1. 单片机的I/O口具有______功能。
答案:双向2. 8051单片机的中断向量表中,第一个中断向量地址是______。
答案:0003H3. 8051单片机的定时器/计数器0和1工作在方式1时,它们是______位计数器。
答案:84. 8051单片机的串行通信可以工作在______种模式。
答案:45. 8051单片机的外部中断0的触发方式是______触发。
答案:电平三、简答题1. 简述单片机的工作原理。
答案:单片机通过程序存储器中的指令控制内部逻辑电路,实现数据的输入、处理和输出。
2. 描述8051单片机的存储器结构。
答案:8051单片机的存储器结构包括程序存储器和数据存储器。
程序存储器用于存储指令,数据存储器用于存储数据。
3. 8051单片机的定时器/计数器有哪些工作模式?答案:8051单片机的定时器/计数器有四种工作模式:方式0、方式1、方式2和方式3。
4. 8051单片机的串行通信有哪些波特率?答案:8051单片机的串行通信波特率可以是1200、2400、4800、9600等,具体取决于定时器的设置。
5. 什么是单片机的中断服务程序?答案:中断服务程序是单片机在接收到中断信号后执行的一段特定功能的程序,用于处理中断请求。
四、计算题1. 如果8051单片机的晶振频率为12MHz,计算定时器0在方式1下的溢出时间。
单片机复习题带答案版
单片机复习题带答案版一、简答题1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点?2、简述8051单片机的内部基本结构。
3、程序状态字PSW中主要包含了哪些状态信息?4、什么是时钟周期、机器周期、指令周期?8051CPU机器周期与时钟周期是什么关系?5、若震荡频率f osc=12MHz,则震荡周期、状态周期、机器周期分别为多少?6、如何区别一条访问数据存储器的指令是访问片RAM还是访问片外RAM?7、8051的存储器由哪几部分组成?片内RAM分为哪几个性质和用途不同的区域?8、在8051单片机中,什么是特殊功能寄存器?特殊功能寄存器与其它片内RAM单元有什么区别?9、简述堆栈工作过程和SP的作用。
10、EA引脚有何功能?11、51系列程序存储器的编址规律是怎样的?如何知道单片机执行指令时,是从片内ROM中取指令,还是从片外ROM中取指令?12、访问位地址20H和字节地址20H的区别是什么?13、按照同一优先级中的优先权排队顺序列出MCS-51的中断源和相应的中断入口地址14、MCS-51定时器/计数器作定时器以及计数器使用时,计数脉冲由谁提供?这与什么因素有关?15、已知振荡器振荡频率为12MHz,要求定时器/计数器0产生10ms的定时,试编写初始化程序首先计算TH0、TL0的初值,TH0=D8H,TL0=F0H;其次确定方式寄存器TMOD的值为01H;最后写出初始化程序:START:MOV TL0,#0F0HMOV TH0,#0D8HMOV TMOD,#01HSETB TR016、简述定时器/计数器0、1的4中工作方式的特点。
17、综述P0、P1、P2、P3口各有哪几个功能?18、为何说P1口是“准双向接口”?19、波特率表示什么?8051单片机的串口在4种工作方式下的波特率分别如何确定?20、如异步通信,每个字符由11位组成,串行口每秒钟传送250个字符,则波特率为多少?答:波特率是每秒钟传送的二进制数的位数,所以波特率为11×250=275021、设串行异步通信的传送速率为2400波特,传送的是带奇偶校验的ASCII码字符,每个字符包含10位(1个起始位,7个数据位,1个奇偶校验位,1个停止符),问每秒钟最多可传送多少个字符?答:2400/10=24022、串行数据传送的主要优点和用途是什么?23、MCS-51有几个中断优先级?如何设定?24、MCS-51单片机CPU响应中断后,由硬件自动执行哪些操作?25、MCS-51指令系统主要有哪几种寻址方式?请举例说明。
单片机复习题(含答案)
四、程序分析题1、已知(A)=83H,(R0)=17H,(17H)=34H,执行下列程序段后:ANL A ,#17HORL 17H ,AXRL A ,@R0CPL A问:(A)= CBH ,(R0)= 17H ,(17H)= 37H 。
2、已知(10H)=5AH,(2EH)=1FH,(40H)=2EH,(60H)=3DH ,执行下列程序段后:MOV 20H ,60HMOV R1 ,20HMOV A ,40HXCH A ,R1XCH A ,60HXCH A ,@R1MOV R0 ,#10HXCHD A ,@R0问:(A)= 5AH (10H)=1FH (2EH)= 3DH(40H)= 2EH (60H)= 3DH 3、执行下列程序段:MOV A ,#00HMOV R7 ,#0FFHMOV PSW, #80HADDC A ,R7问:(CY )= 1 (AC )= 1(P)= 0(ACC)= 00H (R7 )= 0FFH4、写出执行每条指令后的结果。
MOV A,#25HCLR A; (A)=00HCPL A; (A)=0DAH5、写出下列指令执行后的结果。
MOV A,#37HMOV R0,#20HMOV @R0,AANL A,#0FH(A)=__07H___ (R0)=__ 20H __ (20H)=__37H __6、执行如下三条指令后,30H单元的内容是___0EHMOV R1,#30HMOV 40H,#0EHMOV ﹫R1,40H7、请分析下面程序执行后的操作结果,(A)=__40H_ ,(R0)=__60H_。
MOV A,#60HMOV R0,#40HMOV @R0 ,AMOV 41H,R0XCH A,R08、已知:(R0)=00H,写出执行指令后的结果。
ORG 0000HMOV A,R0JZ L1MOV R1,#00HAJMP L2L1: MOV R1,#0FFHL2: SJMP L2END执行完整段程序后,(A)= __00H __ (R1)= __0FFH __。
单片机期末考试复习题及答案
单片机期末考试复习题及答案下面是一个关于单片机期末考试复习题及答案的文章。
单片机期末考试复习题及答案一、选择题1. 下列哪个是单片机的特点?a) 性能强大,功能丰富b) 体积小,功耗低c) 具有高时钟频率d) 以上都是答案:d) 以上都是2. 常用的单片机编程语言是:a) Javab) C语言c) Pythond) C++答案:b) C语言3. 单片机的输入输出方式可分为以下几种,除了___方式还有串行方式。
a) 并行b) 模拟c) 数字d) USB答案:a) 并行4. 下列哪个不是单片机应用的典型领域?a) 智能家居b) 工业自动化c) 医疗器械d) 无线通信答案:d) 无线通信二、填空题1. 单片机是一种_____的计算机系统。
答案:嵌入式2. 单片机内部的_____能够控制程序的运行。
答案:时钟3. 单片机的程序是以_____的形式存储在内部的闪存中。
答案:二进制4. 单片机的I/O引脚可以作为_____输入或输出信号的接口。
答案:数字三、简答题1. 请解释下列代码的含义:```c#include <reg51.h>void main(){P1 = 0x55;while(1);}```答案:这段代码使用C语言编写,通过调用reg51.h头文件引入了51单片机的寄存器定义。
主函数中将P1寄存器的值设置为0x55,即1010101。
接着进入一个无限循环,使程序永远停在这里。
2. 请解释下列代码的含义:```c#include <reg52.h>sbit LED = P1^0;void main(){LED = 0;while(1){LED = ~LED;Delay(500);}}```答案:这段代码同样使用C语言编写,包含了reg52.h头文件定义。
声明了一个名为LED的位变量,它对应P1口的第0位。
在主函数中,首先将LED变量赋值为0,即将P1口的第0位设置为低电平。
单片机考试题和答案
单片机考试题和答案一、选择题(每题2分,共20分)1. 单片机的英文缩写是()。
A. CPUB. MCUC. ROMD. RAM答案:B2. 8051单片机的程序存储器和数据存储器的地址范围分别是()。
A. 0000H-FFFFH, 0000H-FFFFHB. 0000H-FFFFH, 00H-FFHC. 0000H-FFFFH, 00H-7FHD. 0000H-FFFFH, 80H-FFH答案:B3. 8051单片机的定时器/计数器有()个。
A. 1B. 2C. 3D. 4答案:B4. 8051单片机的外部中断有()个。
A. 1B. 2C. 3D. 4答案:B5. 8051单片机的串行通信方式有()种。
A. 1B. 2C. 3D. 4答案:B6. 8051单片机的I/O口是()位的。
A. 4B. 8C. 12D. 16答案:B7. 8051单片机的看门狗定时器的英文缩写是()。
A. WDTB. WDGC. WTDD. WTG答案:A8. 8051单片机的电源电压范围是()。
A. 3.3V-5.5VB. 4.5V-5.5VC. 5V-12VD. 12V-24V答案:B9. 8051单片机的时钟频率范围是()。
A. 12MHz-24MHzB. 24MHz-48MHzC. 48MHz-72MHzD. 72MHz-96MHz答案:A10. 8051单片机的EA引脚的作用是()。
A. 外部中断使能B. 外部中断禁用C. 程序存储器使能D. 程序存储器禁用答案:C二、填空题(每题2分,共20分)1. 8051单片机的内部RAM共有______字节。
答案:1282. 8051单片机的外部中断0和外部中断1的优先级是______。
答案:外部中断0高于外部中断13. 8051单片机的定时器/计数器0和定时器/计数器1的计数范围是______。
答案:0-2554. 8051单片机的串行通信波特率是______可调的。
集美大学 单片机考试复习资料 (基于飞思卡尔AW60)
集美大学机电专业单片机考试复习资料飞思卡尔A W60单片机复习1. 串口程序#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */void MCUInit(void){SOPT = 0b01100000; //$70 System Options Register(write once)ICGC2 = 0b00110000; //$30 internal clock generation 2ICGC1 = 0b01111000; //$78 internal clock generationwhile(!ICGS1_LOCK); //等待FLL稳定PTBDD=0xff ;PTBD=0xff ;}void SCIInit(){unsigned int ubgs,baud=9600;unsigned char sysclk=20;//1.计算波特率并设置:ubgs = fsys/(波特率*16)(其中fsys=sysclk*1000000)ubgs = sysclk*(10000/(baud/100))/16; //理解参考上一行,此处便于CPU运算SCI1BDH= (unsigned char)((ubgs & 0xFF00) >> 8);SCI1BDL= (unsigned char)(ubgs & 0x00FF);SCI1C1= 0; //无校验,正常模式(开始信号+ 8位数据(先发最低位) + 停止信号)SCI1C2= (0| SCI1C2_TE_MASK | SCI1C2_RE_MASK );//允许发送,允许接收,查询方式收发}void SCISend1(unsigned char ch){while(!(SCI1S1 & SCI1S1_TDRE_MASK));//判断发送缓冲区是否为空SCI1D = ch;}void SCISendN(unsigned char n, unsigned char ch[]){unsigned i;for (i = 0; i < n; i++)SCISend1(ch[i]);}unsigned char SCIRe1(unsigned char *p){unsigned int k;unsigned char i;for (k = 0; k < 0x0b; k++)//有时间限制if((SCI1S1 & SCI1S1_RDRF_MASK) != 0)//判断接收缓冲区是否满{i = SCI1D;*p = 0x00;break;}if (k >= 0x0b) //接收失败{i = 0xff;*p = 0x01;}return i;}unsigned char SCIReN(unsigned n,unsigned char ch[]){unsigned char m;unsigned char fp; //接收标志m = 0;while (m < n){ch[m] = SCIRe1(&fp);if (fp == 1){return 1; //接收失败}m++;}return 0; //接收成功}void main(void){unsigned char SerialBuff[]="Hello! World!"; //初始化存放接收数据的数组DisableInterrupts; //禁止总中断MCUInit();SCIInit();EnableInterrupts; //开放总中断SCISendN(13,SerialBuff); //串口发送"Hello World!"for(;;){if((SCI1S1&SCI1S1_RDRF_MASK)!=0){PTBD=SCI1D ;if((SCI1S1&SCI1S1_TDRE_MASK)!=0)SCI1D=PTBD;}elsePTBD=0x00;}}2.按键程序#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */ #define uchar unsigned char#define uint unsigned intunsigned char table[]="I love mcu!";unsigned char table1[]=" very much!";#define rsout PTCDD |= (1<<4)#define rsset PTCD |= (1<<4)#define rsclr PTCD &=~(1<<4)#define rwout PTCDD |= (1<<6)#define rwset PTCD |= (1<<6)#define rwclr PTCD &=~(1<<6)#define enout PTFDD |= (1<<6)#define enset PTFD |= (1<<6)#define enclr PTFD &=~(1<<6)void mcu_init(void){PTADD = 0XFF;rsout;rwout;enout;}void MCUInit(void){SOPT = 0b01110000;ICGC2 = 0b00110000;ICGC1 = 0b01111000;while(!ICGS1_LOCK);}void Delayms(uint MS){uint i,j;for( i=0;i<MS;i++)for(j=0;j<1141;j++);}void Delay(uint count){uint i,j;for(j=0; j<count; j++){for(i=0;i<1000; i++);}}void write_com(uchar com){rsclr;rwclr;enclr;PTAD=com;Delayms(5);enset;Delayms(5);enclr;}void write_data(uchar date){rsset;rwclr;PTAD=date;Delayms(5);enset;Delayms(5);enclr;}void initlcd(void){write_com(0x38);Delayms(5);write_com(0x01);Delayms(5);write_com(0x06);Delayms(5);write_com(0x0c);Delayms(5);}void writedate(uint adress,uint date) {write_com(adress);write_data(date);}void KBInit(void){PTDD &= 0b01110011; //键盘口复位PTGD &= 0b11100000;PTDDD &= 0b01110011; //定义列线(7-4位)为输入PTGDD &= 0b11101111;PTDPE |= 0b10001100; //输入引脚(列线)有内部上拉电阻PTGPE |= 0b00010000;PTGDD |= 0b00001111; //行线(3-0位)为输出KBI1SC &=~(1<<1); //屏蔽键盘中断(KBIE = 0)KBI1PE = (0|KBI1PE_KBIPE7_MASK|KBI1PE_KBIPE6_MASK|KBI1PE_KBIPE5_MASK|KBI1PE_KBIPE4_MASK); //允许输入引脚(列线)的中断可进入KBI1SC = (0|KBI1SC_KBACK_MASK); //清除键盘中断请求(KBACK = 1)}const uint KBtable[] ={0xEE,'9',0xDE,'A',0xBE,'B',0x7E,'C',0xED,'6',0xDD,'7',0xBD,'8',0x7D,'D',0xEB,'3',0xDB,'4',0xBB,'5',0x7B,'E',0xE7,'0',0xD7,'1',0xB7,'2',0x77,'F',0x00};uint KBDef(uint valve){uint KeyPress;uint i;i = 0;KeyPress = 0xff;while (KBtable[i] != 0x00) //在键盘定义表中搜索欲转换的键值,直至表尾{if(KBtable[i] == valve) //在表中找到相应的键值{KeyPress = KBtable[i+1];//取出对应的键定义值break;}i += 2; //指向下一个键值,继续判断}return KeyPress;}uint KBScan1(void){uint line,i,tmp,tmp1,tmp2;line=0b11111110; //使第一根行线为0(低电平)for (i = 1; i <= 4; i++) //最多将扫描4根行线{PTGD = line; //输出开始扫描asm("NOP");asm("NOP");tmp1 = PTDD;tmp2 = PTGD;//整合扫描结果,即键盘输入引脚的4位tmp = (tmp1 & 0x80); //输入扫描结果取7位数tmp1 &= 0x0C;//去2\3两位的数tmp1 = (tmp1<<3);//移到高位tmp |= tmp1;tmp |= (tmp2 & 0x1f);//整合所有数值//通过观察4根列线中是否出现低电平来判断当前行有无按键if ((tmp & 0xF0) != 0xF0) //当前行有键按下{break; //退出循环不再扫描}else //当前行无按键,准备扫描下一行line = (line << 1) | 0x01;}if (i == 5) //无按键,以后将返回0xFFtmp = 0xFF;return (tmp);}uint KBScanN(uint KB_count){uint i,KB_value_last,KB_value_now;if (0 == KB_count || 1 == KB_count) //先扫描一次得到的键值,便于下面比较return KBScan1();KB_value_now = KB_value_last = KBScan1();for (i=0; i<KB_count-1; i++) //以下多次扫描消除误差{Delay(15);KB_value_now = KBScan1();if (KB_value_now == KB_value_last)return KB_value_now; //返回扫描的键值elseKB_value_last = KB_value_now;}return 0xFF; //返回出错标志}void main(void){uint num=0;DisableInterrupts;MCUInit();mcu_init();Delayms(30);initlcd();write_com(0x80+0x40);for(num=0;num<11;num++){write_data(table[num]);Delayms(20);}KBInit(); // 键盘初始化KBI1SC |=(1<<1); // 开键盘中断EnableInterrupts; // 开总中断for(;;) ;}interrupt 22 void isrKeyBoard(void){uint value;uint i;static int j=0;for(i=0; i<50000; i++);DisableInterrupts; //关总中断KBI1SC &=~(1<<1); //屏蔽键盘中断KBI1SC|= KBISC_KBACK_MASK; //清中断标志位value = KBScanN(10); //扫描键值,存于value中if(value!=0xff){writedate(0x80+j,KBDef(value));//键值转化为定义值并发送j++;}PTDD&=0b01110011;PTGD&=0b11100000; //键盘初始化键盘中断KBI1SC |=(1<<1); //开放键盘中断EnableInterrupts ; //开总中断}3. 数码管程序#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */typedef unsigned char uint8;typedef unsigned short int uint16;const uint8 Dtable[10] =// 0 1 2 3 4 5 6 7 8 9 {0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F}; const uint8 CStable[4] =// 0 1 2 3{0xDF,0xEF,0xFD,0xFE};void Delay(uint16 count){uint8 i;uint16 j;for(j=0; j<count; j++)for(i=0; i<200; i++);}void MCUInit(void){SOPT = 0b01110000;ICGC2 = 0b00110000;ICGC1 = 0b01111000;while(!ICGS1_LOCK);}void LEDinit(void){PTBDD = 0xFF; //数据口为输出PTDDD |= 0x33; //位选口为输出}void LEDshow1(uint8 i, uint8 c){PTDD = CStable[i];PTBD = Dtable[c];}void LEDshow(uint8 *Buf){uint8 i,c;for (i = 0;i <= 3;i++){c = Buf[i]-'0';LEDshow1(i,c);Delay(100);}}void main(void){uint8 LEDBUF[4];LEDBUF[0]='2';LEDBUF[1]='0';LEDBUF[2]='1';LEDBUF[3]='2';DisableInterrupts;MCUInit();LEDinit();EnableInterrupts;for(;;){LEDshow(LEDBUF);}}4. 电子钟程序#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */ #define uchar unsigned char#define uint unsigned intunsigned char table[]=" 2012-5-3";unsigned char table1[]=" 00:00:00";#define rsout PTCDD |= (1<<4)#define rsset PTCD |= (1<<4)#define rsclr PTCD &=~(1<<4)#define rwout PTCDD |= (1<<6)#define rwset PTCD |= (1<<6)#define rwclr PTCD &=~(1<<6)#define enout PTFDD |= (1<<6)#define enset PTFD |= (1<<6)#define enclr PTFD &=~(1<<6)uchar shi=0,fen=0,miao=0;uint Count_200ms=0;void mcu_init(void);void MCUInit(void){SOPT = 0b01110000;ICGC2 = 0b00110000;ICGC1 = 0b01111000;while(!ICGS1_LOCK);}void Delayms(uint MS){uint i,j;for( i=0;i<MS;i++)for(j=0;j<1141;j++);}void TPM1Init(void){TPM1SC=(0|TPM1SC_TOIE_MASK|TPM1SC_CLKSA_MASK|TPM1SC_PS2_MASK|TPM1SC_PS1_MASK); //TPM1时钟源选择系统时钟(20MHZ), 分频因子64 TPM1MODH=0xF4;TPM1MODL=0x24; //根据时钟源及分频因子,将TPM1的定时时间设定为200msTPM1CNTH=0x00;TPM1CNTL=0x00;}void write_com(uchar com){rsclr;rwclr;enclr;PTAD=com;Delayms(5);enset;Delayms(5);enclr;}void write_data(uchar date){rsset;rwclr;PTAD=date;Delayms(5);enset;Delayms(5);enclr;}void initlcd(void){write_com(0x38);Delayms(5);write_com(0x01);Delayms(5);write_com(0x06);Delayms(5);write_com(0x0c);Delayms(5);}void write_sfm(uchar add,uchar date) {uchar si,ge;si=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+si);write_data(0x30+ge);}void main(void){uint num=0;DisableInterrupts;MCUInit();mcu_init();Delayms(30);initlcd();TPM1Init();PTBDD=0XFF;PTBD=0XFF;EnableInterrupts;write_com(0x80);for(num=0;num<12;num++){write_data(table[num]);Delayms(20);}write_com(0x80+0x40);for(num=0;num<12;num++){write_data(table1[num]);Delayms(20);}for(;;){}}void mcu_init(void){PTADD = 0XFF;rsout;rwout;enout;}interrupt 11 void TPM1_200msover(void){uint temp;DisableInterrupts;Count_200ms++;while(Count_200ms==5){PTBD=~PTBD;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);Count_200ms=0;}temp=TPM1SC;TPM1SC&=~TPM1SC_TOF_MASK;EnableInterrupts;}5. AD转换程序#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */ typedef unsigned char uint8; // 8 位无符号数typedef unsigned short int uint16; // 16 位无符号数typedef unsigned long int uint32; // 32 位无符号数typedef char int8; // 8 位有符号数typedef short int int16; // 16 位有符号数typedef int int32; // 32 位有符号数uint8 LEDBUF[4];const uint8 Dtable[10] =// 0 1 2 3 4 5 6 7 8 9{0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F};//片选表(电平为低片选)const uint8 CStable[4] =// 0 1 2 3{0xDF,0xEF,0xFD,0xFE};void Delay(uint16 count){uint8 i;uint16 j;for(j=0; j<count; j++)for(i=0; i<200; i++);}void MCUInit(void){SOPT = 0b01110000;ICGC2 = 0b00110000;ICGC1 = 0b01111000;while(!ICGS1_LOCK);}void ADCInit(void){ADC1CFG = 0b11010001; //低功耗,4分频,长采样,8位模式,总线时钟2分频ADC1SC1 = 0b00000000;ADC1SC2 = 0b00000000; //软件触发,禁止比较功能}uint8 ADCV alue(uint8 channel){uint8 SC1_3;uint8 resultH;uint8 result; //1 选取通道号AD0-AD27 = 00000-11011channel &= 0b00011111; //取通道号变量的低五位(实际通道号)SC1_3 =ADC1SC1&(ADC1SC1_COCO_MASK|ADC1SC1_AIEN_MASK|ADC1SC1_AIEN_MASK);// 取ADC1SC1的高三位(取上电复位默认值000)// 单次转换, 禁止中断, 转换未完成ADC1SC1 = SC1_3 | channel; //合并上述8位//2 取A/D转换结果while ((ADC1SC1 & ADC1SC1_COCO_MASK) == 0); //未完成则执行空操作resultH = ADC1RH;result =ADC1RL;return result;}uint8 ADCMid(uint8 channel) //中值滤波{uint8 i,j,k,tmp;//1 取三次A/D转换结果i = ADCV alue(channel);j = ADCV alue(channel);k = ADCV alue(channel);//2 从三次A/D转换结果中取中值tmp = (i > j) ? j : i;tmp = (tmp > k) ? tmp : k;return tmp;}uint8 ADCAve(uint8 channel, uint8 n) //均值滤波{uint16 i;uint32 j;j = 0;for (i = 0; i < n; i++)j += ADCMid(channel);j = j/n;return (uint8)j;}//将AD转换得到的数值量还原为实际的电压值,将电压值的BCD码存储显示缓冲区void ADCV_V ol(uint8 ADC_V,uint8 *p){uint8 V,V1;V=(uint8)(ADC_V/51);V1=ADC_V%51;*p=V;V=(uint8)(V1*10)/51;V1=(V1*10)%51;*(p+1)=V;V=(uint8)(V1*10)/51;V1=(V1*10)%51;*(p+2)=V;V=(uint8)(V1*10)/51;*(p+3)=V;}void LEDinit(void){PTBDD = 0xFF; //数据口为输出PTBPE=0xff; //为B口输出配置上拉电阻PTBDS=0xff;PTDDD |= 0x33; //位选口为输出}void LEDshow1(uint8 i, uint8 c){PTDD = CStable[i];PTBD = Dtable[c];}void LEDshow(uint8 *Buf){uint8 i,c;for (i = 0;i <= 3;i++){c = Buf[i];LEDshow1(3-i,c);Delay(10);}}void main(void){uint8 V1V alue;LEDBUF[0]='0';LEDBUF[1]='0';LEDBUF[2]='0';LEDBUF[3]='0';DisableInterrupts;MCUInit(); //MCU初始化ADCInit(); //AD模块初始化LEDinit(); //LED数码块接口初始化EnableInterrupts;for(;;){V1V alue=ADCAve(15,50); //取得中值滤波法得到的AD转换数值ADCV_V ol(V1V alue,LEDBUF); //将AD转换数值转化为对应的电压值的LEDshow(LEDBUF) ; //LED数码块显示}}6. PWM程序#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */typedef unsigned char uint8; // 8 位无符号数typedef unsigned short int uint16; // 16 位无符号数typedef unsigned long int uint32; // 32 位无符号数typedef char int8; // 8 位有符号数typedef short int int16; // 16 位有符号数typedef int int32; // 32 位有符号数uint16 T1_Mod=0;void delay(uint16 count){uint8 i;uint16 j;for(j=0; j<count; j++)for(i=0; i<200; i++) ;}void MCUInit(void){SOPT = 0b01110000;ICGC2 = 0b00110000;ICGC1 = 0b01111000;while(!ICGS1_LOCK);}void TPM1Init(uint8 T1_p){uint16 temp;if(T1_p>200) T1_p=200; //(使用20M的总线频率作为时钟源,64分频,//最大定时时间不能超过200ms//设置TPM1禁止溢出中断,时钟源为总线时钟,64分频TPM1SC=0|TPM1SC_CLKSA_MASK|TPM1SC_PS2_MASK|TPM1SC_PS1_MASK;//0b00001110temp=(20000/64)*T1_p;T1_Mod=(uint16)temp;TPM1CNTH=0x00;TPM1CNTL=0x00;TPM1MODL=(uint8)T1_Mod; //设置TPM1的定时周期为50ms(50*1000/3.2=0x3D09)TPM1MODH=(uint8)(T1_Mod>>8);}void TPM1Ch_Init(void){TPM1C0SC=0|TPM1C0SC_MS0B_MASK|TPM1C0SC_MS0A_MASK|TPM1C0SC_ELS0B_MASK; //设置TPM1通道0不允许中断,PWM方式,高电平输出TPM1C0VL=0x00;TPM1C0VH=0x00;}void TPM1CH0_Run(uint8 percent){uint16 duty;uint8 dutyH,dutyL;duty=(T1_Mod/100)*percent;dutyH=duty/256;dutyL=duty%256;TPM1SC&=(~TPM1SC_CLKSA_MASK&~TPM1SC_CLKSB_MASK);TPM1CNTH=0x00;TPM1CNTL=0x00;TPM1MODL=(uint8)T1_Mod;TPM1MODH=(uint8)(T1_Mod>>8);TPM1C0VL=dutyL;TPM1C0VH=dutyH;TPM1SC=0|TPM1SC_CLKSA_MASK|TPM1SC_PS2_MASK|TPM1SC_PS1_MASK; }void main(void){MCUInit(); //MCU初始化DisableInterrupts;TPM1Ch_Init();TPM1Init(20);EnableInterrupts;for(;;){uint8 i;for(i=0;i<200;i++){if(i<=100)TPM1CH0_Run(i); //PWM脉冲输出elseTPM1CH0_Run(200-i);delay(200);}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习题:
1.根据总线时钟频率会计算TCNT计数时钟周期的最大值?最小值?溢出周期最大值?
如:fbus=2.4576MHz,值分别为多少?若fbus=8MHz呢?
2.熟悉LED共阴极共阳字型码的计算。
3.熟悉A W60各输入输出端口功能。
4. 不带缓冲和带缓冲的PWM有什么差异性?
5.为什么要将某些寄存器名和寄存器位在头文件中进行宏定义?
6.简述中断的作用与处理过程。
7.AW60 MCU都有哪些中断源?
8.为了实现对键盘的编程,如何区分按键是否真正地被按下,还是抖动?如何处理重键问题?
9.为了实现对键盘的编程,如何识别键盘上的按键?
10.实现计数与定时的基本方法有哪些?比较它们的优缺点。
11.比较AW60定时器模块实现输出比较功能与PWM功能的异同点。
12.为什么要对采集的数据进行滤波,有哪些滤波方法?
13.什么是输出比较?主要用途是什么?
14.什么是中断?什么是中断向量?什么是中断向量地址?GP32一共有多少个中断源?
15.什么是LED静态扫描、LED动态扫描?
16.请描述键盘逐行逐列扫描法原理。
判断是否有键按下通常有哪两种方法?各有何优缺点?17.键盘设计思路中是如何获取按键的行列位置信息的?以3*3键盘为例。
18.LED和LCD各有何特点?
19.什么是脉宽调制波?脉宽调制输出功能主要用途是什么?
20.微控制器的片外晶体振荡器的频率是不是越高越好?为什么?
21.简述定时接口的基本原理。
22.如果系统中需要9个按键,那么矩阵式键盘接口方案应如何设计?并编写键盘初始化子程序及读取键值子程序,键值存入A中,若无键按下,为$FF。
23.设计并编程:仿照本章给出的定时器1通道0输入捕捉中断里程,捕捉两路输入信号,分别用相应的指示灯指示。
24.使用中断方式,对通道0输入的模拟信号连续采样8次,送入缓冲区。
25.用AW60不带缓冲的输出比较功能产生周期约为1S的方波。
设内部总线时钟频率为32.768KHz。
26.根据P178页码图9-3硬件连接图,编写程序完成在四个8段数码管上显示8字循环的程序。
27.根据P178页码图9-3硬件连接图,编写程序完成在四个8段数码管上的4个8段abcdefgh 轮流点亮。
28.编写一个子程序对T1CH0初始化,使T1CH0产生20ms定时中断,并编写T1CH0中断服务程序使PTC0输出周期为1S的方波。
设fbus=8MHz。
29.复习所有的实验。
30.复习所有的例题、作业题。
题型:选择题(30分)、问答题(40分)、编程题(30分)
1。