Top Banner

Click here to load reader

of 84

C51 基础及程序设计

Jan 14, 2016

Download

Documents

sonel

第五章 汇编语言及 C51 程序设计. C51 基础及程序设计. C 语言简介. 一、 C 语言的特点. ★ 语言简洁、紧凑 , 使用方便、灵活 ; ★ 运算符极其丰富 ; ★ 生成的目标代码质量高 , 程序执行效率较高 ( 与汇编语言相比 ) ; ★ 可移植性好 ( 与汇编语言相比 ) ; ★ 可以直接操纵硬件。. 一个完整的 C51 程序是由一个 main () 函数 ( 又称主函数 ) 和若干个其它函数结合而成的 , 或仅由一个 main () 函数构成。. 一个简单 C51 的例子. 例 : 仅由 main () 函数构成的 C 语言程序 。 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1

C51


C
();



(0x00 0x010x020x03C0123)


reg51.h;stdio.h;intrins.h8051,
,


Windows ,“” → “” ,uv2


(AtemlAT89C51),,
,1 ,2 ,File-New Ctrl+N ,3


,Source Group1 ,“Add File to Group ‘Source Group 1’”,,ADD ,,


: 123,12,,;3,,3,,;5; ,4,; 6,\,Debug-Start\Stop Debug Session,Ctrl+F5


:1,,2,3,,45,51


C
float fun2( );
int x,y;
float z;


}


C,,;;“;”C“/*………*/”“//”C,



:
C51,intprintfC32,,C51datasfrbit


MOVC @A+DPTRROM 64K


2. signed int: 16
: signed int


S:,0,1;
:(-1)S×2E-127×1.M


bit:
C51 ,,


C51()
sfr:
C51,8051,sfr1,8
sfr16:16
C51,168051,sfr162,16
sbit:
C51,8051RAM


16SFR


C51,C51,:
signedunsigned
“( )”


int idata var2; /*RAM 256B var2*/
unsigned long data var3; /*RAM128B var3*/
float xdata var4; /*RAM 64KB var4*/
int code var5; /*ROMvar5*/
unsign char bdata var6; /*RAM20H~2FHvar6*/


C51,,sfrsfr16,RAM:
sfr PSW=0xd0;
sfr SCON=0x98;
sfr TMOD=0x89;
sfr P1=0x90;
sfr16 DPTR=0x82;
sfr16 T1=0X8A;


bit data a1 ; /**/
bit bdata a2 ; /**/
bit pdata a3 ; /**/
bit xdata a4 ; /**/


sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;


#pragma,SMALL


{
{
,k1data,k2pdata,m1m2xdata;func1x1y1xdata,func2,SMALL,x2y2data



absacc.h,: #include <absacc.h>


: CBYTEcode,
CBYTEDBYTEPBYTEXBYTECWORDDWORDPWORDXWORD,









C51_at_
,databdataidatapdataC51,;C51,;_at_


_at_
/*datax1,40H*/
/*xdatax2,2000H*/
_at_



:,,3.14159,-7.2,9.9


,‘a’‘1’‘F’ASCII,“\”



5CH


C,,\o,\o,,“I am a student”:
I a m a s t u d e n t \o
14,15,\o,\o,“a”aa\o,a,C51,,


(6) (?:)
(7) (,)
(8) (* &)
(9) (sizeof)
(10) ()
(11) ([ ])
(12) ( • )
(13) (())


- ,9-5=4,-5


++n n1;
n++ n1;
--n n1;
n-- n1;



,:

C51:
&& ()
|| ()
! ()


,C,,,C518051sbit(),
a=0x54=01010100B,b=0x3b=00111011B,a&ba|ba^b~aa<<2b>>2?
a&b=00010000b=0x10
a|b=01111111B=0x7f
a^b=01101111B=0x6f
&
|
^
~
<<
>>


h=x>>8; //x8
l=x&0x00ff; //x8
:


“=”,
x*=y+8 x=x*(y+8)
a%=2 a=a%2
x%=y+8 x=x%(y+8)
x<<=8 x=x<<8
y^=0x55 y=y^0x55
x&=y+8 x=x&(y+8)
:,;,


: x=(a=3,6*3)x18


,(0),1;(0),2:max=(a>b)?a:babmax


“*”,: p2000H,*p2000H,x=*p,2000Hx
“&”,,: x12H,2000H,&x2000H,p,p=&x,xp,px,*px


a=4,b=3,c=5,
a+b>c (a+b)>c,“”,1
b>=c+a b>=(c+a),“”,0
c+a==b-c (c+a)==(b-c),“”,0
d=a<b<c d=(a<b<c),d1(“a<b<c”,“<”,“a<b”0,“0<c”1,d)
f=a!=b<c f=(a!=(b<c)),f1
:()


(1) !a0a0,“”, “”,“”,!a0
(2) a&&b0a“”,b0, “”,a&&b“”,0
(3) !b<2||5&&5<=5 , 1:
! b<2 || 5 && 5 <= 5

:“!b”1;“1<2”1;“5<=5”1;,“1||5&&1”(&&||);,“5&&1”1;“1||1”1


::
a+=a*(a=5,a=5+5*5)


{
}


3 if
12,if


4 switch/case
if-else,if,,Cswitch,
switch:,,,break,,breakcase;defaultn+1(default)


switch/case


5
(2) ,,{ }
:,


(3) ,do-while
: ,


for:
(3) ;
(4) ;
(5) (2);
(6) ,for


6 goto
,Cgotogoto:
: ;
goto,,goto,,


SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1;


(2) ,,
,


,M: aaaa ,M: C(code),D(data),I(idata),P(pdata)Ma,


(2) ,“%” ,
,“&”()()





d
int

u
int

o
int

x
int

f,e,E
float

c
char

s
string




scanf(“%d%d”,&x,&y); //xy
printf(“\n”); //
printf(“\n”); //
while(1); //
}






4. reentrant
6. using n
n0~3,


80515,8051,C5132C51,interrupt m,,,MCS-51



(5) ,using ,;
MCS-51


}


(2) using ninterrupt , , ,
using n:
(1) ,;
(2) ;
(3)



3.
C51JBC_testbit_1,0,C51



}
}



C51



,,,,A,B
A
B



}


void main()
}


RET
END


}


P
A
B




func = 0 x=0



P1,,P3,,P31

P1
P3
1
1111,1110B
1111,0001B
2
1111,1101B
1111,0010B
3
1111,1011B
1111,0011B
4
1111,0111B
1111,0100B
5

1111,0111B


,,,: (while)(do...while)
P
A





{
while(1);
1+2+3……+100=5050


: whiledo whileforgoto
P
A





while(1);
1+2+3……+100=5050


printf(“1+2+3……+100=%d\n”,s);
while(1);
for1~100