嵌入式复习题答案.doc_第1页
嵌入式复习题答案.doc_第2页
嵌入式复习题答案.doc_第3页
嵌入式复习题答案.doc_第4页
嵌入式复习题答案.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式复习题答案一、填空1C8051F单片机编程语言有 汇编语言 和 C51 。2实验时调试F310用的适配器型号是 U-EC5 。3.C8051F系列是完全集成的 混合信号系统级芯片 ,具有与 MCS51完全兼容的 指令内核。4将内部数字资源映射到端口I/O引脚的部件叫 数字交叉开关 。5下列哪些是合法的变量名(用表示):2_cnt 、yoZa_45 、 #y1 、 _ooOOO 。6定义一个字符串变量X,赋初值为2个字符(OK)和1个换行,该语句是:char X4 = “OKn”; ,该变量占 4 个字节。7在内部位寻址RAM区定义间接寻址的变量,用 bdata 存储区关键字,位变量声明用 bit 。8决定P0口是否跳过交叉开关的SFR是 P0SKIP 。9C8051F020扩展的中断源 22 个。普通8051中断源 5 个。10C8051F310的内部振荡的频率是 24.5MHz ,则系统时钟最低为 3.0625MHz 。11C8051F系列单片机选择为数字I/O的引脚可以被配置为 开漏 或 推挽 输出。12下列哪些是合法的变量名(用表示):td_8 、4t 、_5m 、char 。13由signed int 定义的变量其数据范围 -32768 至 +32767 。14单引号括起来的字符(如G),是 字符 型 常量 量。15决定P1口引脚的输出方式配置的SFR是P1DOUT 。16F310最快的指令需要 1 个系统时钟,而普通8051最快的指令要 12 个系统时钟。17F310的内部振荡的频率是 24,5MHz ,精度为 2% 。18实验时调试F310用的适配器型号是 U-EC5 。19.选择为数字I/O的引脚可以被配置为 推挽 或 漏极开路 输出。20下列哪些是合法的变量名(用表示):Jd_66000 、100t 、_q1q2 、%j 。21Sizeof的字节数计算是在 编译 时完成的。22单引号括起来的字符(如A),是 字符 型 常 量。23定义一个字符串变量Y,赋初值为4个字符(ABCD)和1个回车,该语句是:char Y5 = “ABCDr”; ,该变量占 6 个字节。24在外部RAM区定义直接寻址的变量,用 xdata 存储区关键字。25宏定义的预处理命令关键字是 #define 。26决定P2口引脚的输出方式(开漏或推挽)的SFR是 P2MDOUT 。27决定P0口是否跳过交叉开关的SFR是 P0SKIP 。28决定 ADC 负输入通道信号来自于何处的SFR是 AMUX0N 。29当参考电压为3V,输入模拟电压为1V时,F310 的AD转换结果是0x 0155 。30振荡器到定时器之间的分频系数由 OSCICN 和 CKCON 设置。31将内部数字资源映射到端口I/O引脚的部件叫 交叉开关 。32.F310最多可以有 29 个IO端口,最多有 21 个模拟端口,33F310的内部振荡的频率是 24,5MHz ,精度为 2% 。34F310的调试接口具有的“非侵入式”特点,是指调试时 所有的模拟和数字外设都正常工作 。35下列哪些是合法的变量名(用表示):8cnt 、FuZa_BL_65537 、%y1 、_xxXX 。36在数字后面加“L”,可以构成 长整 型 常 量。37定义一个字符串变量X,赋初值为3个字符(ABC)和1个回车,该语句是:char X5 = “ABCr”; ,该变量占 5 个字节。38在内部RAM区定义间接寻址的变量,用 idata 存储区关键字。39在当前文件中插入其他文件的预处理命令关键字是 #include 。40决定P1口引脚的输入方式(模拟或数字)的SFR是 P1MDIN 。41决定 ADC 正输入通道信号来自于何处的SFR是 AMUX0P 。42当温度为25时,F310内部温度传感器的输出电压为 980.75 mV。43振荡器到定时器之间的分频系数由 OSCICN 和 CKCON 设置。二、阅读程序片段,指出执行结果。1 unsigned char d,e;char q = ”A2C1”;d = q1;e =a+q3;此时:d=( 0x32 ),e=( 0x92 ),q=( ” A2C1 ” )2bdata charb = 0x47;sbit b0 = b0;bitc;b = 0x90); 此时:b=( 0x8f ),b0=( 1 ),c=( 0 )3.unsigned char a=0xe2,b=0x6a;unsigned int c,d;a |= 0x1e;b = 0x55;c = a * 2 + b ;d = (b= 1;c1 = (a1 = 0x19); 此时:a1=( 0x1C ),b1=( 1 ),c1=( 1 )6.uchar h_asc(uchar h) uchar asc;if(h= 1;b = (bit)(a & 0x20);c = (a 1); 此时:a=( 0xb5 ),b=( 0xb4 ),c=( 0x021b ) ,d=( 0x005b )10.unsigned char a,b;char c = ”ABCD”;a = +c3;b = a+ % 0x10;此时:a=( 0x46 ),b=( 0x05 ),c=( ” ABCE ” )11.bdata chara = 0x3b;sbit b = a0;bitc;a = 0x40); 此时:a=( 0x77 ),b=( 1 ),c=( 1 )12.unsigned char a=0xf2,b=0x94;unsigned int c,d;a &= 0x1e;b = 0x55;c = a + b * 2;d = a / 4 + (b2); 此时:a=( 0x12 ),b=( 0xc1 ),c=( 0x0194 ) ,d=( 0x0308 )三、根据指定功能,编写C51程序1编写C51程序将片内RAM从30H50H一组数存入片外RAM 500H单元开始的区域中。char idata *rp,xdata *wp;int i;rp=(char idata*)0x30;wp=(char xdata*)0x500;for(i=0;i0x21;i+)*wp = *rp;rp+;wp+;2无符号字符数组x,有10个单元。编写c51程序,将x中大于0x30的数据相加,结果存入片外RAM中。unsigned char x10=10,20,30,40,50,60,70,80,44,33;unsigned int xdata y=0;char i;for(i=0;i30 y += xi;3编写函数y = n的阶乘,入口参数n为无符号字符型,返回值y为无符号长整型。unsigned long y_jiec(unsigned char n)char i;unsigned long y=1;for(i=1;i=x;i+)y = y * i;return y;4.编写函数k = n,式中n=1到v,返回值k为无符号整型。unsigned int he(unsigned char v)char i;unsigned int k=0;for(i=1;i=v;i+)k = k + i;return k;5无符号字符数组s,有10个单元,编写函数,将s中小于10的数据相加,结果作为无符号整型值返回。unsigned char s10;unsigned int cheng(void)char i;unsigned int y=0;for(i=0;i=10;i+)if(si 10)y += si;return y;6无符号字符数组buf,有100个单元,存放在xdata区域。编写找到buf中最大值并有p1口输出程序段。xdata unsigned char buf100;unsigned char i,y=0;for(i=0;iy)y=bufi;P1=y;7无符号字符数组buf,有30个单元。编写函数,将buf中非0且小于10的数据相乘,结果作为无符号整型值返回。unsigned char buf30=2,3,30,40,50,44,33,4,5;unsigned int cheng(void)char i;unsigned int y=1;for(i=0;i30;i+)if(bufi!=0 & bufi10)y *= bufi;return y;8无符号字符数组buf,有40个单元。编写函数,将buf中大于30且小于60的数据相加,结果作为无符号整型值返回。unsigned char buf20=10,20,30,40,50,60,70,80,44,33,22,11;unsigned int jia(void)char i;unsigned int y=0;for(i=0;i30 & bufi60)y += bufi;return y;9无符号字符数组buf,有50个单元,存放在idata区域。编写函数,将buf存放次序颠倒,即原先的buf0、buf1次序变成buf49、buf48次序。idata unsigned char buf50=10,20,30,40,50,44,33,22,11;void dao(void)char i,j,t;for(i=0,j=49;ij;i+,j-)t=bufi;bufi=bufj;bufj=t;四、根据指定要求,根据注释,编写初始化语句。1 C8051f310的P1.0为推挽输出,P1.1为模拟输入,P1的其余管脚为数字输入、开漏输出,P1.0和P1.1不分配数字外设。#include / 包含C8051F310的SFR定义P1MDIN = 0xfd; / P1.1模拟输入P1MDOUT = 0x01;/ P1.0推挽输出P1SKIP = 0x03; / P1.0、P1.1跳过交叉开关2 C8051f310的AD转换电压基准来自VDD,测量P2.1对地的模拟量,AD时钟频率选择为系统时钟的1/8,转换结果右对齐,启动AD转换的方式选择为向AD0BUSY 写1。#include / 包含C8051F310的SFR定义P2MDIN = 0xfd;/ P2.1模拟输入AMX0P = 0x09;/ 正输入=P2.1AMX0N = 0x1f;/ 负输入=GNDADC0CF = 0x38;/ 时钟/8,右对齐ADC0CN = 0x00;/ 向 AD0BUSY 写 1 时启动 ADREF0CN = 0x0a;/ VDD作VREF,开偏压AD0EN = 1;/ 允许 ADC03 C8051f310的定时器T0用内部振荡器,系统时钟选择为振荡频率的1/4,T0时钟选择为系统时钟的1/4,要求T0每20ms中断一次。#include / 包含C8051F310的SFR定义#define T0_VAL(65536-30625)/ T0初值OSCICN = 0xc1;/ 系统时钟=24.5MHz/4CKCON = 0x01;/ T0时钟=系统时钟/4TMOD = 0x01;/ T0方式1TH0 = T0_VAL / 256; / T0初值高位TL0 = T0_VAL % 256; / T0初值低位TR0 = 1;/ 启动T0ET0 = 1; / 允许T0中断EA = 1; / 允许总中断4 C8051f310的P2.3为推挽输出,P2.4为模拟输入,P2的其余管脚为数字输入、开漏输出,P2.3和P2.4不分配数字外设。#include / 包含C8051F310的SFR定义P2MDIN = 0xef; / P2.4模拟输入P2MDOUT = 0x08;/ P2.3推挽输出P2SKIP = 0x18; / P2.3、P2.4跳过交叉开关5 C8051f310的AD转换电压基准来自VDD,测量P1.0对地的模拟量,AD时钟频率选择为系统时钟的1/10,转换结果右对齐,启动AD转换的方式选择为向AD0BUSY 写1。#include / 包含C8051F310的SFR定义P1MDIN = 0xfe;/ P1.0模拟输入AMX0P = 0x00;/ 正输入=P1.0AMX0N = 0x1f;/ 负输入=GNDADC0CF = 0x48;/ 时钟/10,右对齐ADC0CN = 0x00;/ 向 AD0BUSY 写 1 时启动 ADREF0CN = 0x0a;/ VDD作VREF,开偏压AD0EN = 1;/ 允许 ADC06 C8051f310的定时器T0用内部振荡器,系统时钟选择为振荡频率的1/2,T0时钟选择为系统时钟的1/4,要求T0每10ms中断一次。#include / 包含C8051F310的SFR定义#define T0_VAL(65536-30625)/ T0初值OSCICN = 0xc2;/ 系统时钟=24.5MHz/2CKCON = 0x01;/ T0时钟=系统时钟/4TMOD = 0x01;/ T0方式1TH0 = T0_VAL / 256; / T0初值高位TL0 = T0_VAL % 256; / T0初值低位TR0 = 1;/ 启动T0ET0 = 1; / 允许T0中断EA = 1; / 允许总中断7 基本端口应用:P1.2为推挽输出,P1.3为模拟输入,P1的其余管脚为数字输入、开漏输出,P1.2和P1.3不分配数字外设。#include / 包含C8051F310的SFR定义P1MDIN = 0xf7; / P1.3模拟输入P1MDOUT = 0x04;/ P1.2推挽输出P1SKIP = 0x0c; / P1.2、P1.3跳过交叉开关8 AD转换应用:电压基准来自VDD,测量P2.0对地的模拟量,AD时钟频率选择为系统时钟的1/8,转换结果右对齐,启动AD转换的方式选择为向AD0BUSY 写1。#include / 包含C8051F310的SFR定义P2MDIN = 0xfe;/ P2.0模拟输入AMX0P = 0x08;/ 正输入=P2.0AMX0N = 0x1f;/ 负输入=GNDADC0CF = 0x38;/ 时钟/8,右对齐ADC0CN = 0x00;/ 向 AD0BUSY 写 1 时启动 ADREF0CN = 0x0a;/ VDD作VREF,开偏压AD0EN = 1;/ 允许 ADC0五、综合题(共25分)下图是C8051F310应用于串行EEPROM的原理图,已知I2C的底层函数有起始函数Start();停止函数Stop();输出8位函数Out8Bit(uchar v); ack函数ACKPol(),试编写C51程序将无符号字符型x、y的值存入24C02内 10H、11H中的完整程序。要求:编写完整程序(18分),并有恰当注释(7分)。#include / C8051F310的SFR定义/- 初始化 -void First(void)P0MDOUT = 0x00;/ P0.0=SDA,P0.1=SCK,OC输出XBR1 = 0x40;/ 交叉开关1:允许XBAR/-写出1个字节。入口 Addr=8位地址,v=数据 -void I2C_Wr1By(uchar Addr,uchar v)Start();/ 发送1个开始位Out8Bit(0xa0);/ 发出器件slave地址,24系列为1010XXX0写Out8Bit(Addr);/ 发送存储单元地址Out8Bit(v);/ 发送写数据Stop();/ 发送1个停止位ACKPol();/ ACK轮询,检查写完成/- 主程序-void main(void) uchar idata x,yFirst ();/ 初始化while(1)I2C_Wr1By(0x10,x)I2C_Wr1By(0x11,y)2、下图是C8051F310与ZLG7290连接原理图,已知I2C的底层函数及写一个字节 函数I2C_WrnBy(uchar Addr,uchar v) ,复位函数ZLG7290_reset(),试编写C51程序在数码管上显示“8.7.6.5.4.3.2.1.”。要求:编写完整程序(18分),并有恰当注释(7分)。答:程序及注释如下:#define ZLG7290_sla 0x70/ZLG7290的从地址=0x70void ZLG7290_Disp(uchar w,uchar v)uchar Data2;Data0=0x60+w;Data1= 0x80+v; /小数点亮I2C_WrnBy(ZLG7290_sla,0x07,Data,2);Delay(10);void main(void)uchar i;First ();/ 初始化ZLG7290_reset();for(i=0;i8;i+)ZLG7290_Disp(i,i+1);/ 在第i位处,显示i+1值3、模拟量从P2.7输入,发光二极管接在P2.4。当P2.7的输入电压大于2V时,发光二极管点亮。要求:编写完整程序,并有恰当注释。#include / C8051F310的SFR定义sbitLED=P24;/ LED位定义/- 初始化 -void First(void)PCA0MD &= 0x40;/ WDTE = 0 (禁止看门狗)P2MDOUT = 0x10;/ LED=P2.4推挽输出P2MDIN = 0x80;/ P2.7模拟输入AMX0P = 0x0f;/ 正输入=P2.7AMX0N = 0x1f;/ 负输入=GNDADC0CF = 0xf8;/ 右对齐(默认)ADC0CN = 0x00;/ 向AD0BUSY写1时启动 AD转换REF0CN = 0x0a;/ VDD作VREF,开偏压AD0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论