[例4—5]例3-1曾用汇编语言完成了外部RAM的00EH单元和000FH单元的内容交换,现改用C语言编程。 #include<absacc.h> c=XBYTE[14]; main(){ XBYTE[14]=XBYTE[15]; char c; XBYTE[15]=c; for(; ;) { }} [例4-6]完成19805×24503的编程。 main() p=0; { unsigned long xdata *p ; c=a*b; unsigned long a=19805; *p=c; unsigned long b=24503,c; }
【例4-7】片内RAM 20H单元存放着一个0~50H的数,用查表法求出该数的平方值,并放入内部RAM 21H单元。 main()
{ char x ,*p p++; char coode tab[6]={0,1,4,9,16,25}; *p=x; p=0x20;; }x=tab[*p];
X 0 X
【例4-11】片内RAM的20H单元存放一个有效符号数X,函数Y与X有如下关系式;Y= 20H X 0
X 5X 0
设Y存放于21H单元,程序如下: main(){ for(;;){ if(x= =0)*y=0x20; char x,*p,*y; x=*p; }} p=0x20; if(x>0)*y=x; y=0x21; if(x<0)*y=x+5;
[4-12] 有两个数a和b,根据R3的内容转向不同的处理了程序:
r3=0,执行子程序 pr0(完成两数相加) r3=1, 执行子程序pr1(完成两数相减) r3=2,行子程序pr2(完成两数相乘) r3=3,行子程序pr3(完成两数相除) #include<absacc.h> pr3(){c=a/b;} case 1:pr1();break; #define r3 DBYTE[0x03] main(){ case 2:pr2();break; int c,c1,a,b; a=90; b=30; case 3:pr3();break; pr0() {c=a+b;} for(;;){ } pr1(){c=a-b;} switch(r3){ c1=56; pr2(){c=a*b;} case 0:pr0();break; }}
【例4-13】用P1.0产生周期为4ms的方波,同时用P1.1产生周期为8ms的方波。说明 用C语言编写主程序,使P1.1产生周期为8ms的方波为模块1;P1.0产生周期4ms的方波为模块2;用汇编语言编写的延时1ms程序为模块3。
模块1调用模块2获得8ms方波,模块2调用模块3时,向汇编程序传递了字符型参数(x=2),延时2ms,程序如下: C语言程序