×¢1£ºAT89C51 оƬÖÐRAMÖ»ÓеÍ128 룬¶øAT89C52оƬÖÐRAMÁíÍ⻹Óиß128룬µØַΪ
80Hµ½FFH£¬²¢ºÍÌØÊâ¼Ä´æÆ÷SFRµØÖ·Öصþ¡£
×¢2£ºÔÚ±àд³ÌÐòʱ£¬ÈçÊÇʹÓÃsignedºÍunsignedÁ½ÖÖÊý¾ÝÀàÐÍ£¬ÄÇô¾ÍµÃʹÓÃÁ½ÖÖ¸ñʽÀàÐ͵Ŀâ
º¯Êý£¬Õ⽫ʹռÓõĴ洢¿Õ¼ä³É±¶Ôö³¤£¬Òò´ËÔÚ±à³Ìʱ£¬ÈçÊÇֻǿµ÷³ÌÐòµÄÔËËãËٶȶøÓÖ²»½øÐиºÊýÔËË㣬×îºÃ²ÉÓÃÎÞ·ûºÅ£¨unsigned£©¸ñʽ¡£ ×¢3£º¾¡Á¿Ê¹ÓÃλ±äÁ¿¡£
×¢4£ºËõдÐÎʽ¶¨Ò壺 typedef unsigned char ucha typedef unsigned uint uint
4.4 ´æ´¢Ä£Ê½¼°ËµÃ÷£¨P63£© ´æ´¢Ä£Ê½ SMALL Сģʽ COMPACT ½ô´Õģʽ LARGE ´óģʽ ˵ Ã÷ ²ÎÊý¼°¾Ö²¿±äÁ¿·ÅÈë¿ÉÖ±½ÓÑ°Ö·µÄƬÄÚ´æ´¢Æ÷£¨×î´ó128×Ö½Ú£¬Ä¬ÈÏ´æ´¢ÀàÐÍÊÇdata£© ²ÎÊý¼°¾Ö²¿±äÁ¿·ÖÒ³Íâ´æ´¢Æ÷£¨×î´ó256×Ö½Ú£¬Ä¬ÈÏ´æ´¢ÀàÐÍÊÇpdata£©£¬Í¨¹ý¼Ä´æÆ÷ R0ºÍR1¼ä½ÓÑ°Ö·£¬—£¿Õ¼äλÓÚµ¥Æ¬»úÄÚ²¿RAM¡£ ²ÎÊý¼°¾Ö²¿±äÁ¿Ö±½Ó·ÅÈëƬÍâÊý¾Ý´æ´¢Æ÷£¨×î´ó64KB£¬Ä¬ÈÏ´æ´¢ÀàÐÍÊÇxdata£©£¬Í¨¹ýÊý¾ÝÖ¸ÕëDPTRÀ´Ñ°Ö·£¬·ÃÎÊЧÂʵ͡£ µÚÎå¿Î 8051²¢Ðнӿڼ°ÆäCx51¶¨Ò壨P66£©
P0-P3¿Ú£¬32¸ùI/OÏߣ»
ÊäÈ뻺³åÆ÷£»Êä³ö»º³åÆ÷£»ÒýÖÁоƬÍâµÄ¶Ë¿ÚÒý½Å£» P0¡¢P1¡¢P3Ϊ׼˫Ïò¿Ú£»P0Ϊ˫ÏòÈý̬¿Ú£»
ÏòÍâÀ©Õ¹´æ´¢Æ÷ÒªÓÃP0¿ÚºÍP2¿Ú£¬P2¿ÚÊä³öµØÖ·¸ß8루A15¡«A8£©£¬P0¿ÚÊý¾ÝºÍµØÖ·¸´Óã» P0¡«P3¿ÉÒÔ×Ö½ÚÑ°Ö·£¬Ò²¿ÉÒÔλѰַ£»
±ê×¼8051µÄ¶Ë¿ÚûÓÐÊý¾Ý·½Ïò¼Ä´æÆ÷¡£P1¡¢P2¡¢ºÍP3¶¼ÓÐÄÚ²¿ÉÏÀ£¬¶¼¿ÉÒÔ×÷ΪÊäÈë»òÊä³ö¡£ д¶Ë¿Ú¾ÍÊÇдһ¸öÒªËͶ˿ڵÄÖµ£»
¶Á¶Ë¿Ú£¬±ØÐëÏÈÏò¶Ë¿Úд¡°1¡±£¨µ¥Æ¬»ú¸´Î»Ê±¿ÚÏߵijõÖµÊÇÈ«¡°1¡±£©
µÚÁù¿Î λ±äÁ¿£¨P68£©
6.1¡¢Î»±äÁ¿µÄCx51µÄÓï·¨¼°ÓïÒåÈçÏ£º bit dir_bit£»/*½«dir_bit¶¨ÒåΪλ±äÁ¿*/
6.2¡¢º¯Êý¿É°üº¬ÀàÐÍΪbitµÄ²ÎÊý£¬Ò²¿ÉÒÔ½«Æä×÷Ϊ·µ»ØÖµ¡£
Àý£ºbit func(bit b0,bit b1) {/*¡¡¡*/ Return (b1); }
6.3¡¢¶Ôλ±äÁ¿¶¨ÒåµÄÏÞÖÆ£º λ±äÁ¿²»Äܶ¨Òå³ÉÒ»¸öÖ¸Õ룬Èç²»Äܶ¨Òå bit *bit_point; ²»´æÔÚλÊý×飬 Èç²»Äܶ¨Òå bit b_array[ ]; 6.4¡¢ ¿ÉλѰַ¶ÔÏó£º ÊÇÖ¸¿ÉÒÔ×Ö½Ú»òλѰַµÄ¶ÔÏó¡£Î»ÓÚ8051ÄÚ²¿RAMÖУ¬Òò´Ë´æ´¢ÀàÐÍΪidata. 6.5¡¢sbit λ±äÁ¿Ãû£½Î»µØÖ·
sbit P1_1 = Ox91;
ÕâÑùÊÇ°ÑλµÄ¾ø¶ÔµØÖ·¸³¸øλ±äÁ¿¡£Í¬sfr Ò»Ñùsbit µÄλµØÖ·±ØÐëλÓÚ80H-FFH Ö®¼ä¡£
6.6¡¢sbit λ±äÁ¿Ãû£½ÌØÊ⹦ÄܼĴæÆ÷Ãû^λλÖÃ
sft P1 = 0x90;
sbit P1_1 = P1 ^ 1; //Ïȶ¨ÒåÒ»¸öÌØÊ⹦ÄܼĴæÆ÷ÃûÔÙÖ¸¶¨Î»±äÁ¿ÃûËùÔÚµÄλÖà µ±¿ÉѰַλλÓÚÌØÊ⹦ÄܼĴæÆ÷ÖÐʱ¿É²ÉÓÃÕâÖÖ·½·¨ 6.7¡¢sbit λ±äÁ¿Ãû£½×Ö½ÚµØÖ·^λλÖÃ
sbit P1_1 = 0x90 ^ 1;
sbit P1_0 = P1 ^ 0; //¶øÊÇ×Ô¼º¶¨ÒåÌØÊâ¼Ä´æÆ÷ sfr P1 = 0x90; //ÕâÀïûÓÐʹÓÃÔ¤¶¨ÒåÎļþ£¬
sbit P1_7 = 0x90 ^ 7; //֮ǰÎÒÃÇʹÓõÄÔ¤¶¨ÒåÎļþÆäʵ¾ÍÊÇÕâ¸ö×÷Óà sbit P1_1 = 0x91; //ÕâÀï·Ö±ð¶¨ÒåP1 ¶Ë¿ÚºÍP10,P11,P17 Òý½Å
µÚÆß¿Î ËãÊõÔËËã·û¼°Æä±í´ïʽ£¨P69£©
7.1¡¢Cx51ËãÊõÔËËã·û¼°Æä±í´ïʽ ËãÊõÔËËã·û + - * / % ±í´ïʽ a+b a-b a*b a/b 9%5Óà4 º¬Òå ¼Ó·¨ÔËËã·û£¬»òÕýÖµ·ûºÅ ¼õ·¨ÔËËã·û£¬»ò¸ºÖµ·ûºÅ ³Ë·¨ÔËËã·û£¬ ³ý·¨ÔËËã·û£¬ Ä££¨ÇóÓࣩÔËËã·û£¬»òÕýÖµ·ûºÅ
7.2¡¢Cx51¹ØϵÔËËã·û¼°Æä±í´ïʽ ËãÊõÔËËã·û ¡´ ¡µ ¡´= ¡µ= == £¡= ±í´ïʽ a¡´ b a > b a <= b a >= b a == b a != b º¬Òå СÓÚ ´óÓÚ Ð¡ÓÚ»òµÈÓÚ ´óÓÚ»òµÈÓÚ ²âÊÔµÈÓÚ ²âÊÔ²»µÈÓÚ
7.3¡¢Cx51Âß¼ÔËËã·û¼°Æä±í´ïʽ
ËãÊõÔËËã·û && || ! ±í´ïʽ a && b a || b a ! b º¬Òå Âß¼¡°Ó롱£¨AND£© Âß¼¡°»ò¡±£¨OR£© Âß¼¡°·Ç¡±£¨NOT£©
7.4¡¢Cx51λ²Ù×÷¼°Æä±í´ïʽ ËãÊõÔËËã·û & | ^ ` << >> ±í´ïʽ a & b a | b a ^ b a ~ b a << 7 a >> 8 º¬Òå °´Î»Óë °´Î»»ò °´Î»Òì»ò °´Î»È¡·´ ×óÒÆ7λ ÓÒÒÆ8λ
×¢£º×óÒÆ»òÓÒÒÆ£¬¿Õ³öλ²¹¡°0¡±£¬ÒƳö붪µô¡£
7.5¡¢Cx51×ÔÔö¼õÔËËã·û¼°Æä±í´ïʽ ×ÔÔö¼õÔËËã·û ++i,--i i++,i-- º¬Òå ÔÚʹÓÃi֮ǰ£¬ÏÈʹiÖµ¼Ó£¨¼õ£©1 ÔÚʹÓÃiÖ®ºó£¬ÔÙʹiÖµ¼Ó£¨¼õ£©1
7.6¡¢Cx51¸´ºÏÔËËã·û¼°Æä±í´ïʽ ËãÊõÔËËã·û += -= *= /= %= <<= >>= &= ^= |= ~= ×¢£ºÓÅÏȼ¶ËµÃ÷
±í´ïʽ a += b a -= b a *= b a /= b a %= b a <<= 8 a >>= 8 a &= b a ^= b a |= b a ~= b º¬Òå a=a+b ¼Ó·¨ a=a-b ¼õ·¨ a=a*b ³Ë·¨ a=a/b ³ý·¨ a=a%b ÇóÓà a=a<<8×óÒÆ a=a>>8ÓÒÒÆ a=a&b°´Î»Óë a=a^b°´Î»Òì»ò a=a|b°´Î»»ò a=a~b°´Î»È¡·´
µÚ°Ë¿Î Cx51¿ØÖÆÓï¾ä£¨P80£© 8£®1¡¢Ñ»·Óï¾ä while
do while if /else switch/case
£¨P90£© forÓï¾ä
for (±í´ïʽ1£»±í´ïʽ2£»±í´ïʽ3) for (i=0;i<50;i++) ÌØÀý1:for (;i<50;i++)
ȱʡ±í´ïʽ1£¬²»¶ÔiÉè³õÖµ ÌØÀý2:for (i=1;;i++){sum=sum+i}
²»ÅжÏÑ»·Ìõ¼þ£¬ÎÞÐÝÖ¹µØ½øÐÐÏÂÈ¥¡£Ï൱ÓÚ i=1;
while (1) {sum= sum+1; i++; }
ÌØÀý3:for ( ;i<100;){sum=sum+1;i++}
Ï൱ÓÚ
while (i<100) {sum= sum+1; i++; }
ÌØÀý4:for (i=1;i<100;i++)£»
ûÓÐÑ»·Ì壬ÆðÑÓʱ×÷Óà ÌØÀý5:for (;;)
{/*Ñ»·Ìå*/ } Ï൱ÓÚ
while (1)
{/*Ñ»·Ìå*/
} /*ËÀÑ»·Ìå*/
ΪÁËʹ³ÌÐò¾ßÓпɶÁÐÔ£¬²»Ö÷ÕÅʹÓÃforÓï¾äµÄÌØÀý
µÚ¾Å¿Î Cx51 T0Öжϣ¨P182£© 9.1¡¢T0¶¨Ê±Æ÷/¼ÆÊýÆ÷²Ù×÷ģʽ