Keil C51 vs ±ê×¼C
ÉîÈëÀí½â²¢Ó¦ÓÃC51¶Ô±ê×¼ANSICµÄÀ©Õ¹ÊÇѧϰC51µÄ¹Ø¼üÖ®Ò»¡£ÒòΪ´ó¶àÊýÀ©Õ¹¹¦Äܶ¼ÊÇÖ±½ÓÕë¶Ô8051ϵÁÐCPUÓ²¼þµÄ¡£´óÖÂÓÐÒÔÏÂ8 Àࣺ 8051´æ´¢ÀàÐͼ°´æ´¢ÇøÓòl; ´æ´¢Ä£Ê½l´æ´¢Æ÷ÀàÐÍÉùÃ÷l±äÁ¿ÀàÐÍÉùÃ÷l λ±äÁ¿ÓëλѰַl ÌØÊ⹦ÄܼĴæÆ÷(SFR)l C51Ö¸Õël º¯ÊýÊôÐÔ¾ßÌå˵Ã÷ÈçÏÂ(8031ΪȱʡCPU)¡£
µÚÒ»½Ú Keil C51À©Õ¹¹Ø¼ü×Ö
C51 V4.0°æ±¾ÓÐÒÔÏÂÀ©Õ¹¹Ø¼ü×Ö(¹²19¸ö)£º_at_ ; idata; sfr16; alien; interrupt; smallbdata; large; _task_; Code; bit; pdatausing; reentrant xdata; compact sbit; data; sfr
µÚ¶þ½Ú ÄÚ´æÇøÓò(Memory Areas)£º
1. Pragram Area£º
ÓÉCode˵Ã÷¿ÉÓжà´ï64kBytesµÄ³ÌÐò´æ´¢Æ÷
2. Internal Data Memory
ÄÚ²¿Êý¾Ý´æ´¢Æ÷¿ÉÓÃÒÔϹؼü×Ö˵Ã÷£ºdata£ºÖ±½ÓÑ°Ö·Çø£¬ÎªÄÚ²¿RAMµÄµÍ128 ×Ö½Ú 00H¡«7FH£¬idata£º¼ä½ÓÑ°Ö·Çø£¬°üÀ¨Õû¸öÄÚ²¿RAMÇø 00H¡«FFH£¬bdata£º¿ÉÎ»Ñ°Ö·Çø£¬20H¡«2FH
3. External Data Memory
ÍⲿRAMÊÓʹÓÃÇé¿ö¿ÉÓÉÒÔϹؼü×Ö±êʶ£ºxdata£º¿ÉÖ¸¶¨¶à´ï64KBµÄÍⲿֱ½ÓÑ°Ö·Çø£¬µØÖ··¶Î§0000H¡«0FFFFHpdata£ºÄÜ·ÃÎÊ1Ò³(25bBytes)µÄÍⲿRAM£¬Ö÷ÒªÓÃÓÚ½ô´Õģʽ(Compact Model)¡£
4. Speciac Function Register Memory
8051Ìṩ128BytesµÄSFRÑ°Ö·Çø£¬ÕâÇøÓò¿ÉλѰ Ö·¡¢×Ö½ÚѰַ»ò×ÖѰַ£¬ÓÃÒÔ¿ØÖƶ¨Ê±Æ÷¡¢¼ÆÊýÆ÷¡¢´®¿Ú¡¢I/O¼°ÆäËü²¿¼þ£¬¿ÉÓÉÒÔϼ¸Öֹؼü×Ö˵Ã÷£ºsfr£º×Ö½ÚѰַ ±ÈÈç sfr P0=0x80;ΪPO¿ÚµØÖ·Îª80H£¬£½;ºóH¡«FFHÖ®¼äµÄ³£Êý¡£sfr16£º×ÖѰַ£¬Èçsfr16 T2=0xcc;Ö¸¶¨Timer2¿ÚµØÖ·T2L=0xcc T2H=0xCDsbit£ºÎ»Ñ°Ö·£¬Èçsbit EA=0xAF;Ö¸¶¨µÚ0xAFλΪEA£¬¼´ÖжÏÔÊÐí»¹¿ÉÒÔÓÐÈç϶¨Òå·½·¨£ºsbit 0V=PSW^2£»(¶¨Òå0VΪPSWµÄµÚ2λ)sbit 0V£½0XDO^2£»(ͬÉÏ)»òbit 0V-£½0xD2(ͬÉÏ)¡£
µÚÈý½Ú ´æ´¢Ä£Ê½
´æ´¢Ä£Ê½¾ö¶¨ÁËûÓÐÃ÷È·Ö¸¶¨´æ´¢ÀàÐ͵ıäÁ¿£¬º¯Êý²ÎÊýµÈµÄȱʡ´æ´¢ÇøÓò£¬¹²ÈýÖÖ£º
1. Smallģʽ
ËùÓÐȱʡ±äÁ¿²ÎÊý¾ù×°ÈëÄÚ²¿RAM£¬ÓŵãÊÇ·ÃÎÊËٶȿ죬ȱµãÊǿռäÓÐÏÞ£¬Ö»ÊÊÓÃÓÚС³ÌÐò¡£
2. Compactģʽ
ËùÓÐȱʡ±äÁ¿¾ùλÓÚÍⲿRAMÇøµÄÒ»Ò³(256Bytes)£¬¾ßÌåÄÄÒ»Ò³¿ÉÓÉP2¿ÚÖ¸¶¨£¬ÔÚSTARTUP.A51ÎļþÖÐ˵Ã÷£¬Ò²¿ÉÓÃpdataÖ¸¶¨£¬ÓŵãÊǿռä½ÏSmallΪ¿íÔ£ËٶȽÏSmallÂý£¬½ÏlargeÒª¿ì£¬ÊÇÒ»ÖÖÖмä״̬¡£
3. largeģʽ
ËùÓÐȱʡ±äÁ¿¿É·ÅÔÚ¶à´ï64KBµÄÍⲿRAMÇø£¬ÓŵãÊǿռä´ó£¬¿É´æ±äÁ¿¶à£¬È±µãÊÇËٶȽÏÂý¡£Ì
Ïà¹ØÎĵµ£º
http://blog.csdn.net/eroswang/archive/2009/06/12/4265046.aspx
1,·ÀÖ¹Ò»¸öÍ·Îļþ±»Öظ´°üº¬
#ifndef COMDEF_H
#define COMDEF_H
//Í·ÎļþÄÚÈÝ
#endif
2,ÖØÐ¶¨ÒåһЩÀàÐÍ,·ÀÖ¹ÓÉÓÚ¸÷ÖÖÆ½Ì¨ºÍ±àÒëÆ÷µÄ²»Í¬,¶ø²úÉúµÄÀàÐÍ×Ö½ÚÊý²îÒì,·½±ãÒÆÖ²¡£
typedef unsigned char boolea ......
±àÒ룬±àÒë³ÌÐò¶ÁȡԴ³ÌÐò£¨×Ö·ûÁ÷£©£¬¶ÔÖ®½øÐдʷ¨ºÍÓï·¨µÄ·ÖÎö£¬½«¸ß¼¶ÓïÑÔÖ¸Áîת»»Îª¹¦ÄܵÈЧµÄ»ã±à´úÂ룬ÔÙÓÉ»ã±à³ÌÐòת»»Îª»úÆ÷ÓïÑÔ£¬²¢ÇÒ°´ÕÕ²Ù×÷ϵͳ¶Ô¿ÉÖ´ÐÐÎļþ¸ñʽµÄÒªÇóÁ´½ÓÉú³É¿ÉÖ´ÐгÌÐò¡£
CÔ´³ÌÐòÍ·Îļþ££>Ô¤±àÒë´¦Àí(cpp)££>±àÒë³ÌÐò±¾Éí££>ÓÅ»¯³ÌÐò££>»ã±à³ÌÐò££>Á´½Ó³ÌÐò--> ......
char* my_strrev( char* string )
{
char *left, *right, ch;
left = right = string;
while( *right++ != '\0');
right -= 2;
while( left<right )
{
ch = *left;
*left = *right;
*right = ch;
++left; --right;
&n ......
C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
1.ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ¡£ÎªÀí½âÕâ¾ä»°£¬ÎÒ¾ÙÀýÀ´ËµÃ÷¡£ÎÒÃÇҪͬʱ±àÒëÁ½¸öÔ´Îļþ£¬Ò»¸öÊÇa.c£¬ÁíÒ»¸öÊÇmain.c.
ÏÂÃæÊÇa.cµÄÄÚÈÝ£º
char a = 'A'; // global variable
void ......
ÒÔÇ°Ôø¾×ܽá¹ýһƪ(http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html
)£¬¹ØÓÚÔÚ
C
ÖÐÈçºÎµ÷ÓÃ
C++
µÄ´úÂ룬µ±Ê±²¢Î´×öÍêÈ«µÄÕ¹¿ª£¬Ö»ÊǼòµ¥µÄ×öÁËϵ÷ÊÔ£¬×î½ü¿´µ½Ò»¸öÌâĿҪÇóʵÏÖ
C
ºÍ
C++
ÖдúÂëµÄ»¥Ïàµ÷Óã¬Æä½á¹ûËäÈ»¶¼ÊÇͨ¹ý
extern “C”
À´ÊµÏÖ
£¬µ«ÊǾßÌ廹ÊÇÓÐЩ²î±ðµÄ¡ ......