嵌入式系统部分习题解答.docVIP

  • 6
  • 0
  • 约2.58千字
  • 约 4页
  • 2018-05-05 发布于河南
  • 举报
嵌入式系统部分习题解答

习题解答 习题 1(123页) 1。片外RAM从1000H~10FFH有一数据块,编写程序将其传送到片外RAM的2500H单元开始的区域中。 char xdata *rp,xdata *wp; //指向xdata中字符型的指针 int i; rp=(char xdata*)0x1000; //读指针,指向源 wp=(char xdata*)0x2500; //写指针,指向目标 for(i=0;i0x100;i++) { *wp = *rp; rp++; wp++; } 说明:C语言中通常不建议绝对地址访问。此为借用汇编语言习题。 习题 2 2。将无符号整型变量i求补码后送回原处。 unsigned int i; //xdata中的字符型数组 i = -i; //求补码 习题 3 3。编写函数,将十六进制数0~F转换为ASCII码。 /*-----------十六进制数0~F转换为ASCII码的函数---------*/ uchar hextoasc(uchar h) { uchar asc; if(h10) asc=h+’0’; else asc=h-10+’A’; return asc; } /*-----------函数调用例---------*/ x = hextoasc(0x05); //结果x=‘5’ x = hextoasc(0x0a); //结果x=‘A’ 习题 4 1, x0 4。编写函数,计算y= 0, x=0 -1, x0 uchar jisuan(uchar x) { uchar y; if(x0) y=1; else if(x==0) y=0; else y=-1; return y; } 习题 5 5。x=0~5,根据x的值,分别执行fun0、func1...func5。 switch(x) { case 0: func0(); break; case 1: func1(); break; case 2: func2(); break; case 3: func3(); break; case 4: func4(); break; case 5: func5(); break; } 习题 6 6。根据x中的8位二进制,用ASCII码填充到buf数组。 例如:x,buf=’0’,’1’,’0’,’1’,’0’,’0’,’1’,’1’ uchar i,x,buf[8]; x = 0x53; //送个试验的值 for(i=0;i8;i++) { if(x 0x80) buf[i]=‘1’; //最高位=1 else buf[i]=0; x = 1; //左移1位 } 习题 7 7。将x中的十六进制数0~F转换为7段码送P1口。 uchar code tab_7dm[16]= /*7段码表*/ { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, /*0,1,2,3,4,5,6,7*/ 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71 /*8,9,A,B,C,D,E,F*/ }; P1 = tab_7dm[x]; 习题 8 8。有一个5行*8列的二维数组,将第i行、第j列元素送y。 uchar sz[5][8]; y = sz[i][j]; 习题 9 9。实现图示功能。 P1.1 P2.2 IE0 IE1 P1.3 b25 b26 #include reg51.h //在reg51.h中有P13、IE0等定义 bit b25,b26; P13 = ((P22 |IE0) P11) (IE1 | !b25) !b26; 习题 10 10。有2个不同大小的数组buf1、buf2,首单元是数组长度。编程找出数组中最大值,相乘后送y。 uchar getmax(uchar data *p) //找到最大值的函数 { uchar i,max=0; for(i=1;i=p[0];i++) //从第2单元开始,到最后 { if(p[i]max) max=p[i]; } return max; } void main(void) {uchar buf1[]={4,1,200,2,4}; //试验数据 uchar buf2[]={5,1,3,7,4,100}; uint x1,x2,y; x1 = getmax(buf1); //调用找最大值的函数 x2 = getmax(buf2); //调用找最大值的函数 y = x1 * x2

文档评论(0)

1亿VIP精品文档

相关文档