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Çø£¬ÓŵãÊǿռä´ó£¬¿É´æ±äÁ¿¶à£¬È±µãÊÇËٶȽÏÂý¡£Ì
Ïà¹ØÎĵµ£º
1,·ÀÖ¹Ò»¸öÍ·Îļþ±»Öظ´°üº¬
#ifndef COMDEF_H
#define COMDEF_H
//Í·ÎļþÄÚÈÝ
#endif
2,ÖØÐ¶¨ÒåһЩÀàÐÍ,·ÀÖ¹ÓÉÓÚ¸÷ÖÖÆ½Ì¨ºÍ±àÒëÆ÷µÄ²»Í¬,¶ø²úÉúµÄÀàÐÍ×Ö½ÚÊý²îÒì,·½±ãÒÆÖ²¡£
typedef unsigned char boolean; /* Boolean value type. */
typedef ......
http://www.cnblogs.com/hoodlum1980/archive/2007/08/15/857067.html
Ìâ¸É£ºÊäÈëÁ½¸ö½Ï´óµÄÊý£¬Êä³öÏà³ËµÄ½á¹û¡£
Òâ˼Ҳ¾ÍÊÇÁ½¸öÊýºÜ´ó£¬³¬³öÁËintµÄ´æ´¢·¶Î§¡£
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
void GetDigits( ......
1.Çø±ð(Ö÷ÒªµÄ):Ö¸ÕëÐèÒªÔö¼ÓÒ»´Î¶îÍâµÄÌáÈ¡²Ù×÷
±àÒëÆ÷Ϊÿ¸ö±äÁ¿·ÖÅäÒ»¸öµØÖ·(×óÖµ)¡£Õâ¸öµØÖ·±àÒëʱ¿ÉÖª£¬¶øÇҸñäÁ¿ÔÚÔËÐÐʱһֱ±£´æÓÚÕâ¸öµØÖ·¡£Ïà·´£¬´æ´¢ÓÚ±äÁ¿ÖеÄÖµ(ËüµÄÓÒÖµ)Ö»ÓÐÔÚÔËÐÐʱ²Å¿ÉÖª¡£Èç¹ûÐèÒªÓõ½±äÁ¿Öд洢µÄÖµ£¬±àÒëÆ÷¾Í·¢³öÖ¸Áî´ÓµØÖ·¶ÁÈë±äÁ¿Öµ²¢½«Ëü´æÓڼĴæÆ÷ÖС£
  ......
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý¡£µ«ÊÇ£¬C++±Ï¾ ......