单片机原理接口及应用李群芳版习题解答参考 下载本文

{ int xdata c; c=DBYTE[0x20]*DBYTE[0x35]; }

10.5 #include

#include sbit P1_0=P1^0; sbit P1_2=P1^2; sbit P1_3=P1^3;

unsigned char * pData=&DBYTE[0x30]; TLC() {

unsigned char k,i; unsigned char d=0; for(k=10;k>0;k--) { P1_3=0; for(i=8;i>0;i--) { d<<=1; d|=P1_2; P1_0=1; P1_0=0; } *pData=d; pData++; } }

main() {

P1=0x04; P1_0=0; P1_3=1; TLC(); while(1);

} 10.6 略 10.7 略

10.8 #include

main() {

char i;

for(i=0x10;i<0x16;i++) DBYTE[i]=XBYTE[i]; }

10.9 #include main() { unsigned int * x,* y,* z; x=(unsigned int *)0x20; y=(unsigned int *)0x22;

z=(unsigned int *)0x24; if(*x>*y) *z=*x; else *z=*y; while(1); }

10.10 #include

main() {

unsigned char *pBCD=(unsigned char *)0x21; unsigned long *pBinary=(unsigned long *)0x30; unsigned char *pLen=(unsigned char *)0x20; *pBinary=0; while(*pLen) { (*pLen)--; *pBinary*=10; *pBinary+=*(pBCD+*pLen);

} //程序认为BCD码是低位放在低地址的 }

10.11 #include

main() {

unsigned int *pBinary=(unsigned int *)0x30; unsigned char *pBCD=(unsigned char *)0x21; unsigned char *pLen=(unsigned char *)0x20; *pLen=0;

while(*pBinary) { *pBCD=*pBinary; (*pLen)++; pBCD++; *pBinary/=10;

} //程序将BCD码的低位放在低地址 }

第11章、RTX51实时操作系统 略

第12章、以MCU为核心的嵌入式系统的设计与调试

12.1 参见教材第12.2节

12.2 提示,.利用定时/计数器定时100ms,中断10次达1秒,满60秒,分加1秒清0;满60分,小时加1分清

0,同时分,秒均有十位数和个位数,按十进制进位,并送显示,显示可采用6个数码管(或八个数码管),校对可用按键中断方式或按键的查询进行加1校对,用并行口接驱动器(非门或三极管)驱动扬声器进行闹钟,如果采用89C51/S51做,由于片内己有程序存储器,四个口用户均可使用.

12.3 提示,两个定时器同时使用,一个定时器产生节拍,另一个定时器产生音符。 12.4-12.5 略

第13章、单片机实验指导 略