4.7 完成逻辑表达式P1.2=P1.4×ACC.0+ACC.7(“×”表示逻辑与,“+”表示逻辑或)。 答:
#include<reg51.h> sbit P12=P1^2; main()
{P12=~(P1^4&ACC^0|ACC^7;)
4.8 将外部RAM的10H~15H单元的内容传送到内部RAM的10H~15H单元。 答:
#include<reg51.h> P2=0; main(){ for(m=0x10;m<=0x15;m++) char pdata*m; {n=m;*n=*m;} char data*n; }
4.9 内部RAM的20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。 答:
#define unit unsigned int m=0x20;n=0x22;P=0x24; main(){ if(*m<*n)*P=*n; uint data*m,*n=,*p; else*P=*m; for(;;){ }}
4.10 将内部RAM21H单元存放的BCD码转换为二进制存入30H为首址的单元,BCD码的长度存放在20H单元中。 答: main() for(i=0;i<*P1;i++){ int data a=0,*P3; a=a*10+*P2; char i,*P1,*P2; P2++; P1=0x20; } P2=0x21; *P3=a; P3=0x30; }
4.11 将内部RAM30H单元存放的2字节二进制数转换为二进制数存放于21H为首的单元中,长度存放于20H单元中。 答: main() {*P2=a/k; unsigned int a,k,*P3; a=a%k; char i,*P1,*P2; P2++; P1=0x20;P2=0x25;P3=0x30; k=k/10; a=*P3;k=10000; } while(a/k= =0)k=k/10; *P1=i; for(i=0;a!=0;i++) }
5.6 利用8XX51的P1口,检测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意),画出电路并编出程序。
答: