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
LOAD MORE