µÚÒ»ÕÂϰÌâ
1.ʲôÊǵ¥Æ¬»ú£¿µ¥Æ¬»úºÍͨÓÃ΢»úÏà±ÈÓкÎÌØµã£¿
´ð£ºµ¥Æ¬»úÓÖ³ÆÎªµ¥Æ¬Î¢¼ÆËã»ú£¬ËüµÄ½á¹¹ÌصãÊǽ«Î¢ÐͼÆËã»úµÄ»ù±¾¹¦Äܲ¿¼þ£¨ÈçÖÐÑë´¦ÀíÆ÷£¨CPU£©¡¢´æ´¢Æ÷¡¢ÊäÈë½Ó¿Ú¡¢Êä³ö½Ó¿Ú¡¢¶¨Ê±/¼ÆÊýÆ÷¼°ÖÕ¶ËϵͳµÈ£©È«²¿¼¯³ÉÔÚÒ»¸ö°ëµ¼ÌåоƬÉÏ¡£ ËäÈ»µ¥Æ¬»úÖ»ÊÇÒ»¸öоƬ£¬µ«ÎÞÂÛ´Ó×é³É»¹ÊÇ´ÓÂß¼¹¦ÄÜÉÏÀ´¿´£¬¶¼¾ßÓÐ΢»úϵͳµÄ¶¨Òå¡£ÓëͨÓõÄ΢ÐͼÆËã»úÏà±È£¬µ¥Æ¬»úÌå»ýСÇÉ£¬¿ÉÒÔǶÈëµ½Ó¦ÓÃϵͳÖÐ×÷Ϊָ»Ó¾ö²ßÖÐÐÄ£¬ÊÇÓ¦ÓÃϵͳʵÏÖÖÇÄÜ»¯¡£
2.µ¥Æ¬»úµÄ·¢Õ¹ÓÐÄö½×¶Î£¿8λµ¥Æ¬»ú»á²»»á¹ýʱ£¬ÎªÊ²Ã´£¿
´ð£ºµ¥Æ¬»úµ®ÉúÓÚ1971Ä꣬¾ÀúÁËSCM¡¢MCU¡¢SOCÈý´ó½×¶Î£¬ÔçÆÚµÄSCMµ¥Æ¬»ú¶¼ÊÇ8λ»ò4λµÄ¡£ÆäÖÐ×î³É¹¦µÄÊÇINTELµÄ8031£¬´ËºóÔÚ8031ÉÏ·¢Õ¹³öÁËMCS51ϵÁÐMCUϵͳ¡£»ùÓÚÕâһϵͳµÄµ¥Æ¬»úϵͳֱµ½ÏÖÔÚ»¹Ôڹ㷺ʹÓá£Ëæ×Ź¤Òµ¿ØÖÆÁìÓòÒªÇóµÄÌá¸ß£¬¿ªÊ¼³öÏÖÁË16λµ¥Æ¬»ú£¬µ«ÒòΪÐԼ۱Ȳ»ÀíÏ벢δµÃµ½ºÜ¹ã·ºµÄÓ¦Óá£90Äê´úºóËæ×ÅÏû·Ñµç×Ó²úÆ·´ó·¢Õ¹£¬µ¥Æ¬»ú¼¼ÊõµÃµ½Á˾޴óÌá¸ß¡£Ëæ×ÅINTEL i960ϵÁÐÌØ±ðÊǺóÀ´µÄARMϵÁеĹ㷺ӦÓã¬32λµ¥Æ¬»úѸËÙÈ¡´ú16λµ¥Æ¬»úµÄ¸ß¶ËµØÎ»£¬²¢ÇÒ½øÈëÖ÷Á÷Êг¡¡£È»¶ø£¬ÓÉÓÚ¸÷Ó¦ÓÃÁìÓò´óÁ¿ÐèÒªµÄÈÔÊÇ8λµ¥Æ¬»ú£¬Òò´Ë¸÷´ó¹«Ë¾·×·×ÍÆ³ö¸ßÐÔÄÜ¡¢´óÈÝÁ¿¡¢¶à¹¦ÄܵÄÐÂÐÍ8λµ¥Æ¬»ú¡£
Ŀǰ£¬µ¥Æ¬»úÕý³¯×ŸßÐÔÄÜºÍ¶àÆ·ÖÖ·¢Õ¹£¬µ«ÓÉÓÚMCS-51ϵÁÐ8λµ¥Æ¬»úÈÔÄÜÂú×ã¾ø´ó¶àÊýÓ¦ÓÃÁìÓòµÄÐèÒª£¬¿ÉÒԿ϶¨£¬ÒÔMCS-51ϵÁÐΪÖ÷µÄ8λµ¥Æ¬»ú£¬ÔÚµ±Ç°¼°ÒÔºóµÄÏ൱һ¶Îʱ¼äÄÚÈÔ½«Õ¼¾Ýµ¥Æ¬»úÓ¦ÓõÄÖ÷µ¼µØÎ»¡£
3.¾ÙÀý˵Ã÷µ¥Æ¬»úµÄÖ÷ÒªÓ¦ÓÃÁìÓò¡£
´ð£ºµ¥Æ¬»ú¹ã·ºÓ¦ÓÃÓÚÒÇÆ÷ÒÇ±í¡¢¼ÒÓõçÆ÷¡¢Ò½ÓÃÉ豸¡¢º½¿Õº½Ì졢רÓÃÉ豸µÄÖÇÄÜ»¯¹ÜÀí¼°¹ý³Ì¿ØÖƵÈÁìÓò£¬´óÖ¿ɷÖÈçϼ¸¸ö·¶³ë£º
ÖÇÄÜÒÇÆ÷
µ¥Æ¬»ú¾ßÓÐÌå»ýС¡¢¹¦ºÄµÍ¡¢¿ØÖƹ¦ÄÜÇ¿¡¢À©Õ¹Áé»î¡¢Î¢ÐÍ»¯ºÍʹÓ÷½±ãµÈÓŵ㣬¹ã·ºÓ¦ÓÃÓÚÒÇÆ÷ÒDZíÖУ¬½áºÏ²»Í¬ÀàÐ͵Ĵ«¸ÐÆ÷£¬¿ÉʵÏÖÖîÈçµçѹ¡¢µçÁ÷¡¢¹¦ÂÊ¡¢ÆµÂÊ¡¢Êª¶È¡¢Î¶ȡ¢Á÷Á¿¡¢ËÙ¶È¡¢ºñ¶È¡¢½Ç¶È¡¢³¤¶È¡¢Ó²¶È¡¢ÔªËØ¡¢Ñ¹Á¦µÈÎïÀíÁ¿µÄ²âÁ¿¡£²ÉÓõ¥Æ¬»ú¿ØÖÆÊ¹µÃÒÇÆ÷ÒDZíÊý×Ö»¯¡¢ÖÇÄÜ»¯¡¢Î¢ÐÍ»¯£¬ÇÒ¹¦ÄÜ±ÈÆð²ÉÓõç×Ó»òÊý×ֵ緸ü¼ÓÇ¿´ó¡£ÀýÈ羫ÃܵIJâÁ¿É豸£¨µçѹ±í¡¢¹¦Âʼƣ¬Ê¾²¨Æ÷£¬¸÷ÖÖ·ÖÎöÒÇ£©¡£
¹¤Òµ¿ØÖÆ
µ¥Æ¬»ú¾ßÓÐÌå»ýС¡¢¿ØÖƹ¦ÄÜÇ¿¡¢¹¦ºÄµÍ¡¢»·¾³ÊÊÓ¦ÄÜÁ¦Ç¿¡¢À©Õ¹Áé»îºÍʹÓ÷½±ãµÈÓŵ㣬Óõ¥Æ¬»ú¿ÉÒÔ¹¹³ÉÐÎʽ¶àÑùµÄ¿ØÖÆÏµÍ³¡¢Êý¾Ý²É¼¯ÏµÍ³¡¢Í¨ÐÅϵͳ¡¢Ðźżì²âϵͳ¡¢ÎÞÏ߸Ð֪ϵͳ¡¢²â¿ØÏµÍ³¡¢»úÆ÷È˵ÈÓ¦ÓÿØÖÆÏµÍ³¡£ÀýÈ繤³§Á÷Ë®ÏßµÄÖÇÄÜ»¯¹ÜÀí£¬µçÌÝÖÇÄÜ»¯¿ØÖÆ¡¢¸÷ÖÖ±¨¾¯ÏµÍ³£¬Óë
¼ÆËã»úÁªÍø¹¹³É¶þ¼¶¿ØÖÆÏµÍ³µÈ¡£ ¼ÒÓõçÆ÷ÏÖÔڵļÒÓõçÆ÷¹ã·º²ÉÓÃÁ˵¥Æ¬»ú¿ØÖÆ£¬´Óµç·¹ìÒ¡¢Ï´Ò»ú¡¢µç±ùÏä¡¢¿Õµ÷»ú¡¢²Êµç¡¢ÆäËûÒôÏìÊÓÆµÆ÷²Ä¡¢ÔÙµ½µç×Ó³ÓÁ¿É豸ºÍ°×É«¼ÒµçµÈ¡£
ÍøÂçºÍͨÐÅ
ÏÖ´úµÄµ¥Æ¬»úÆÕ±é¾ß±¸Í¨ÐŽӿڣ¬¿ÉÒԺܷ½±ãµØÓë¼ÆËã»ú½øÐÐÊý¾ÝͨÐÅ£¬ÎªÔÚ¼ÆËã»úÍøÂçºÍͨÐÅÉ豸¼äµÄÓ¦ÓÃÌṩÁ˼«ºÃµÄÎïÖÊÌõ¼þ£¬ÏÖÔÚµÄͨÐÅÉ豸»ù±¾É϶¼ÊµÏÖÁ˵¥Æ¬»úÖÇÄÜ¿ØÖÆ£¬´ÓÊÖ»ú£¬µç»°»ú¡¢Ð¡Ðͳ̿ؽ»»»»ú¡¢Â¥Óî×Ô¶¯Í¨Ðźô½Ðϵͳ¡¢ÁгµÎÞÏßͨÐÅ¡¢ÔÙµ½ÈÕ³£¹¤×÷ÖÐËæ´¦¿É¼ûµÄÒÆ¶¯µç»°£¬¼¯ÈºÒƶ¯Í¨ÐÅ£¬ÎÞÏßµç¶Ô½²»úµÈ¡£
Ò½ÓÃÉ豸ÁìÓò
µ¥Æ¬»úÔÚÒ½ÓÃÉ豸ÖеÄÓÃ;ÒàÏ൱¹ã·º£¬ÀýÈçÒ½ÓúôÎü»ú£¬¸÷ÖÖ·ÖÎöÒÇ£¬¼à»¤ÒÇ£¬³¬ÉùÕï¶ÏÉ豸¼°²¡´²ºô½ÐϵͳµÈµÈ¡£
Ä£¿é»¯ÏµÍ³
ijЩרÓõ¥Æ¬»úÉè¼ÆÓÃÓÚʵÏÖÌØ¶¨¹¦ÄÜ£¬´Ó¶øÔÚ¸÷ÖÖµç·ÖнøÐÐÄ£¿é»¯Ó¦Ó㬶ø²»ÒªÇóʹÓÃÈËÔ±Á˽âÆäÄÚ²¿½á¹¹¡£ÈçÒôÀÖ¼¯³Éµ¥Æ¬»ú£¬¿´ËƼòµ¥µÄ¹¦ÄÜ£¬Î¢ËõÔÚ´¿µç×ÓоƬÖУ¨ÓбðÓÚ´Å´ø»úµÄÔÀí£©£¬¾ÍÐèÒª¸´ÔÓµÄÀàËÆÓÚ¼ÆËã»úµÄÔÀí¡£È磺ÒôÀÖÐźÅÒÔÊý×ÖµÄÐÎʽ´æÓÚ´æ´¢Æ÷ÖУ¨ÀàËÆÓÚROM£©£¬ÓÉ΢¿ØÖÆÆ÷¶Á³ö£¬×ª»¯ÎªÄ£ÄâÒôÀÖµçÐźţ¨ÀàËÆÓÚÉù¿¨£©¡£ÔÚ´óÐ͵ç·ÖУ¬ÕâÖÖÄ£¿é»¯Ó¦Óü«´óµØËõСÁËÌå»ý£¬¼ò»¯Á˵ç·£¬½µµÍÁËË𻵡¢´íÎóÂÊ£¬Ò²·½±ãÓÚ¸ü»»¡£ Æû³µµç×Ó µ¥Æ¬»úÔÚÆû³µµç×ÓÖеÄÓ¦Ó÷dz£¹ã·º£¬ÀýÈçÆû³µÖеķ¢¶¯»ú¿ØÖÆÆ÷£¬»ùÓÚCAN×ÜÏߵįû³µ·¢¶¯»úÖÇÄܵç×Ó¿ØÖÆÆ÷¡¢GPSµ¼º½ÏµÍ³¡¢abs·À±§ËÀϵͳ¡¢Öƶ¯ÏµÍ³¡¢Ì¥Ñ¹¼ì²âµÈ¡£
´ËÍ⣬µ¥Æ¬»úÔÚ¹¤ÉÌ¡¢½ðÈÚ¡¢¿ÆÑС¢½ÌÓý¡¢µçÁ¦¡¢Í¨ÐÅ¡¢ÎïÁ÷ºÍ¹ú·Àº½¿Õº½ÌìµÈÁìÓò¶¼ÓÐ×ÅÊ®·Ö¹ã·ºµÄÓÃ;¡£
4.½«Ê®½øÖÆÊý37ת»»Îª¶þ½øÖÆ£¬BCDÂëºÍÊ®Áù½øÖÆÊý£¬²¢¶Ôת»»½á¹û½øÐжԱȷÖÎö¡£ ´ð£º37=(100101)B=(25)H£»BCD ÂëΪ 0011 0111£» ¿É¼û£¬Í¬Ò»¸öÊýÓò»Í¬½øÖƱíʾ£¬Æä½á¹ûÒ²²»Í¬¡£
5.д³öÏÂÁÐÊ®½øÖÆÊýÔÚ8λ΢»úÖеÄÔÂ룬·´ÂëºÍ²¹ÂëÐÎʽ¡£ £¨1£©+36
ÔÂë 0010 0100B ·´Âë 0010 0100B ²¹Âë 0010 0100B £¨2£©-36
ÔÂë 1010 0100B ·´Âë 1101 1011B
²¹Âë 1101 1100B £¨3£©+127
ÔÂë 0111 1111B ·´Âë 0111 1111B ²¹Âë 0111 1111B £¨4£©-128
ÔÂë 1000 0000B ·´Âë 0111 1111B ²¹Âë 1000 0000B £¨5£©-121
ÔÂë 1111 1001B ·´Âë 1000 0110B ²¹Âë 1000 0111B
6.¶ÔÓÚ¶þ½øÖÆÊý1000 1001B£¬ÈôÀí½âΪÎÞ·ûºÅÊý£¬Ôò¸ÃÊý¶ÔӦʮ½øÖÆÊýΪ¶àÉÙ£¿ÈôÀí½âΪÓзûºÅÊý£¬Ôò¸ÃÊý¶ÔӦʮ½øÖÆÎª¶àÉÙ£¿ÈôÀí½âΪBCDÊý£¬Ôò¸ÃÊý¶ÔӦʮ½øÖÆÊýΪ¶àÉÙ£¿
´ð£º1000 1001B ÎÞ·ûºÅÊý£º137 ÓзûºÅÊý£º-9£» BCDÊý£º89£»
7.¶ÔÏÂÁи÷×éÊý½øÐС°Ó롱£¬¡°»ò¡±ºÍ¡°Òì»ò¡±ÔËËã¡£ £¨1£©1010 1010 ºÍ 0000 0000 Óë 0000 0000 »ò 1010 1010
Òì»ò 1010 1010
(2) 0111 0111 ºÍ 1000 1000 Óë 0000 0000 »ò 1111 1111 Òì»ò 1111 1111
(3) 1110 1110 ºÍ 0111 0111 Óë 0110 0110 »ò 1111 1111 Òì»ò 1001 1001
(4) 0011 1100 ºÍ 1111 0000 Óë 0011 0000 »ò 1111 1100 Òì»ò 1100 1100
8.Proteus ISISµÄ¹¤×÷½çÃæÖаüº¬Äö´°¿Ú£¿²Ëµ¥À¸Öаüº¬ÄöÑ¡Ï ´ð£ºProteus ISISµÄ¹¤×÷½çÃæÖ÷Òª°üÀ¨±êÌâÀ¸¡¢²Ëµ¥À¸¡¢¹¤¾ßÀ¸¡¢×´Ì¬À¸¡¢·½Î»¿ØÖư´Å¥¡¢·ÂÕæ½ø³Ì¿ØÖư´Å¥¡¢¶ÔÏóÑ¡Ôñ´°¿Ú£¬ÔÀíͼ±à¼´°¿ÚºÍÔ¤ÀÀ´°¿ÚµÈ¡£
Ö÷²Ëµ¥À¸°üº¬Îļþ¡¢²é¿´¡¢±à¼¡¢¹¤¾ß¡¢Éè¼Æ¡¢Í¼ÐΡ¢Ô´Îļþ¡¢µ÷ÊÔ¡¢¿â¡¢Ä£°å¡¢ÏµÍ³¡¢°ïÖúÑ¡Ïî¡£
9.ÀûÓÃISISÄ£¿é¿ª·¢µ¥Æ¬»úϵͳÐèÒª¾¹ýÄöÖ÷Òª²½Ö裿 ´ð£º
£¨1£©Æô¶¯ISIS; £¨2£©»æÖƵç·ÔÀíͼ£» £¨3£©ÊäÈ뵥Ƭ»ú³ÌÐò£» £¨4£©½øÐÐÔ´´úÂëµ÷ÊÔ£» £¨5£©·ÂÕæÔËÐС£
10.ºÎνPCB£¿ÀûÓÃARESÄ£¿é½øÐÐPCBÉè¼ÆÐèÒª¾¹ýÄöÖ÷Òª²½Ö裿
´ð£ºPCB£¨Printed Circuit Board£©£¬ÖÐÎÄÃû³ÆÎªÓ¡ÖƵ緰壬ÓÖ³ÆÓ¡Ë¢µç·°å¡¢Ó¡Ë¢Ïß·°å£¬ÊÇÖØÒªµÄµç×Ó²¿¼þ£¬Êǵç×ÓÔªÆ÷¼þµÄÖ§³ÅÌ壬Êǵç×ÓÔªÆ÷¼þµçÆøÁ¬½ÓµÄÌṩÕß¡£ÓÉÓÚËüÊDzÉÓõç×ÓÓ¡Ë¢ÊõÖÆ×÷µÄ£¬¹Ê±»³ÆÎª¡°Ó¡Ë¢¡±µç·°å¡£ ÀûÓÃARESÄ£¿é½øÐÐPCBÉè¼ÆµÄÖ÷Òª²½Ö裺
£¨1£©Æô¶¯ARES£» £¨2£©ÔªÆ÷¼þ²¼¾Ö£» £¨3£©ÔªÆ÷¼þ²¼Ïߣ» £¨4£©ÆÌÍ£» £¨5£©ÈýάЧ¹ûͼ£» £¨6£©CADCAMÊä³ö¡£
µÚ2Õ MCS-51µ¥Æ¬»ú½á¹¹¼°ÔÀí ϰÌâ
1£® MSC£51µ¥Æ¬»úÄÚ²¿ÓÉÄÄЩ¹¦Äܲ¿¼þ×é³É£¬¸÷ÓÐʲô¹¦ÄÜ£¿ ´ð£ºÒÔ51µ¥Æ¬»úΪÀý£¬ÆäÄÚ²¿¹¦Äܲ¿¼þÓУº
¿ØÖÆÆ÷£ºÊǶÔÈ¡×Ô³ÌÐò´æ´¢Æ÷ÖеÄÖ¸Áî½øÐÐÒëÂ룬Ôڹ涨µÄʱ¿Ì·¢³ö¸÷ÖÖ²Ù×÷ËùÐèµÄ¿ØÖÆÐźţ¬Íê³ÉÖ¸ÁîËù¹æ¶¨µÄ¹¦ÄÜ£»
ÔËËãÆ÷£º¸ù¾Ý¿ØÖÆÆ÷·¢À´µÄÐźţ¬Ö´ÐÐËãÊõÂß¼ÔËËã²Ù×÷£» ´æ´¢Æ÷£º°üÀ¨³ÌÐò´æ´¢ºÍÊý¾Ý´æ´¢Æ÷£»
¶¨Ê±Æ÷¼ÆÊýÆ÷£º2¸ö16λ¶¨Ê±Æ÷/¼ÆÊýÆ÷£¬¿É¶Ô»úÆ÷ÖÜÆÚ¼ÆÊý£¬Ò²¿É¶ÔÍⲿÊäÈëÂö³å¼ÆÊý£» ÖжÏϵͳ£º¿ÉÏìÓ¦Èý¸öÄÚ²¿ÖжÏÔ´ºÍÁ½¸öÍⲿÖжÏÔ´µÄÖжÏÇëÇó£» ÊäÈëÊä³ö½Ó¿Ú£º4¸ö8λ²¢ÐпںÍÒ»¸öȫ˫¹¤´®Ðпڣ» 2£®MSC£51µ¥Æ¬»úÍⲿÒý½ÅµÄÃû³ÆÊÇʲô£¿¸÷ÓÐʲô¹¦ÄÜ£¿ ´ð£º(1) µçÔ´¼°¾§ÕñÒý½Å VCC(40½Å)£º+5VµçÔ´Òý½Å VSS(20½Å)£º ½ÓµØÒý½Å
XTAL1(19½Å)£»Íâ½Ó¾§ÕñÒý½Å£¨ÄÚÖ÷ŴóÆ÷ÊäÈë¶Ë£© XTAL2(18½Å)£ºÍâ½Ó¾§ÕñÒý½Å£¨ÄÚÖ÷ŴóÆ÷Êä³ö¶Ë£© (2) ¿ØÖÆÒý½Å
RST/VPD(9)Ϊ¸´Î»/ ±¸ÓõçÔ´Òý½Å ΪµØÖ·Ëø´æÊ¹ÄÜÊä³ö/ ±à³ÌÂö³åÊäÈë
£ºÊä³ö·ÃÎÊÆ¬Íâ³ÌÐò´æ´¢Æ÷¶ÁѡͨÐźŠ£ºÍⲿROMÔÊÐí·ÃÎÊ/ ±à³ÌµçÔ´ÊäÈë (3) ²¢ÐÐI/O¿ÚÒý½Å
P0.0¡«P0.7£¨39¡«32½Å£©¡ª¡ªP0¿Ú£» P1.0¡«P1.7£¨1¡«8½Å£©¡ª¡ªP1¿Ú£» P2.0¡«P2.7£¨21¡«28½Å£©¡ª¡ªP2¿Ú£» P3.0¡«P3.7£¨10¡«17½Å£©¡ª¡ªP3¿Ú¡£
3£®51ϵÁе¥Æ¬»úµÄ·â×°ÓÐÄÄЩÀàÐÍ£¿Çë˵Ã÷ÿһÖÖ·â×°Òý½ÅÖ®¼äµÄ¾àÀë¡£ ´ð£º51ϵÁе¥Æ¬»úµÄ·â×°ÓÐ:
40Òý½ÅË«ÁÐÖ±²å·â×°£¨DIP¡ª¡ªdual in-line package£©£¬Òý½ÅÖ®¼äµÄ¾àÀëÊÇ100mil()£» 44Òý½Å·½ÐÎ±âÆ½·â×°£¨QFP ¡ª¡ªquad flat package£©·½Ê½£¬Òý½ÅÖ®¼äµÄ¾àÀëÊÇ£» 44Òý½Å´øÒýÏßµÄËÜÁÏÐ¾Æ¬ÔØÌåPLCC(Plastic Leaded Chip Carrier)¡£
4£®Ê²Ã´ÊǸ´Î»£¿µ¥Æ¬»ú¸´Î»µç·ÓÐÄļ¸ÖÖ£¬¹¤×÷ÔÀí·Ö±ðÊÇʲô£¿ ´ð£º¸´Î»¡ª¡ªÊ¹µ¥Æ¬»ú»Ö¸´ÔʼĬÈÏ״̬µÄ²Ù×÷¡£
µ¥Æ¬»ú¸´Î»µç·ÓÐ:Éϵ縴λµç·£¬Óɵç×èºÍµçÈݹ¹³É£¬Í¨¹ýÉϵçʱ£¬µçÈÝÏ൱ÓÚ¶Ì·¶øÊ¹¸´Î»Òý½ÅÔÚ¾§ÕñÓÐЧµÄÇé¿öϱ£³Ö2¸ö»úÆ÷ÖÜÆÚµÄ¸ßµçÆ½£»°´Å¥¿ª¹Ø¸´Î»µç·£¬ÓÉÁ½¸öµç×èµÄ·Öѹ¹¹³É£¬Í¨¹ýÊÖ¹¤°´Ï°´Å¥£¬Ê¹¸´Î»Òý½ÅÔÚ¾§ÕñÓÐЧµÄÇé¿öϱ£³Ö2¸ö»úÆ÷ÖÜÆÚµÄ¸ßµçÆ½¡£
5£®Í¨³£µÄ΢»úϵͳ´æ´¢Æ÷½á¹¹ÓÐÄļ¸ÖÖ£¿MCS-51µ¥Æ¬»ú´æ´¢Æ÷ÊôÓÚÄÄÒ»Àࣿ CS-51¿ÉѰַ¶à´ó¿Õ¼ä£¿
´ð£ºÍ¨³£µÄ΢»úϵͳ´æ´¢Æ÷½á¹¹ÓÐÁ½Öֽṹ£¬¼´¹þ·ð½á¹¹ºÍ·ëŵÒÀÂü½á¹¹(Ò²½ÐÆÕÁÖ˹¶Ù½á¹¹)£¬MCS-51µ¥Æ¬»ú´æ´¢Æ÷ÊôÓÚ£¬MCS-51¿ÉѰַ¿Õ¼äÊÇÁ½¸ö64KB£¬¼´64KBµÄ³ÌÐò´æ´¢¿Õ¼äºÍ64KBµÄÊý¾Ý´æ´¢¿Õ¼ä¡£ 6£®Æ¬ÄÚRAMÖеÍ128¸öµ¥Ôª»®·ÖΪÄÄÈý¸öÖ÷Òª²¿·Ö£¿¸÷²¿·ÖµÄÖ÷Òª¹¦ÄÜÊÇʲô£¿ ´ð£ºÆ¬ÄÚRAMÖеÍ128¸öµ¥Ôª»®·ÖΪÈý¸ö²¿·Ö£º ¢Ù¹¤×÷¼Ä´æÆ÷Çø£¨00H-1FH£©£¬
ËÄ×飬ÿ×é8¸ö£¬¿É×÷Óù¤×÷¼Ä´æÆ÷Çл»Ê¹Óã» ¢Ú¿ÉÎ»Ñ°Ö·Çø£¨20H-2FH£©£¬16B£¬Î»µØÖ·Îª00H-7FH£¬ÓÃ×÷Ϊ°´Î»Ñ°Ö·µÄ¿Õ¼ä£» ¢ÛÓû§RAMÇø£¨30H-7FH£©£¬80B£¬ÓÃ×÷ÆÕͨRAMµ¥Ôª»ò¶ÑÕ»¡£
7£®³ÌÐò״̬×ּĴæÆ÷PSW¸÷λµÄ¶¨ÒåÊÇʲô£¿ ´ð£º³ÌÐò״̬×ּĴæÆ÷PSW¸÷λµÄ¶¨ÒåÈçÏ£º
PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 PSW.7£º½ø/½èλ±êÖ¾CY£¬¼Ó·¨ÓнøÎ»Ê±ÖÃ1£¬¼õ·¨ÓнèλʱÖÃ1£» PSW.6£º¸¨Öú½øÎ»±êÖ¾AC£¬¼Ó·¨ÔËËãµÍËÄλÏò¸ßÉÏËÄλÓнøÎ»Ê±ÖÃ1£» PSW.5¡¢PSW.1£ºÓû§±ê־λF0ºÍÓû§±ê־λF1£¬ ±£´æÓû§µÄλÊý¾Ý£»
PSW.4¡¢PSW.3£º¹¤×÷¼Ä´æÆ÷Ñ¡Ôñ¿ØÖÆÎ»RS1ºÍRS0£¬00ÖÁ11·Ö±ðÑ¡ÔñËÄ×鹤×÷Ö®Ò»×÷Ϊµ±Ç°¹¤×÷¼Ä´æÆ÷
PSW.2 £ºÒç³ö±ê־λOV£¬ÓзûºÅÊý¼Ó¡¢¼õÔËËã½á¹ûÓÐÒç³ö»ò³Ë³ýÉϽá¹ûÒì³£(³Ë·¨ÔËËã½á¹û´óÓÚ255¼´³Ë»ýÔÚBAÖУ¬»ò³ý·¨ÔËËã³ýÊýΪ0)ʱÖÃ1 PSW.0£ºÆæÅ¼±ê־λP£¬ÀÛ¼ÓÆ÷AÖÐ1µÄ¸öÊýÎªÆæÊýʱÖÃ1¡£
8£®Ê²Ã´ÊÇʱÖÓÖÜÆÚ£¿Ê²Ã´ÊÇ»úÆ÷ÖÜÆÚ£¿Ê²Ã´ÊÇÖ¸ÁîÖÜÆÚ£¿µ±Õñµ´ÆµÂÊΪ12MHzʱ£¬Ò»¸ö»úÆ÷ÖÜÆÚΪ¶àÉÙ΢Ã룿
´ð£ºÊ±ÖÓÖÜÆÚÓÖ½ÐÕñµ´ÖÜÆÚ»òÅÄ£¬ÓÃP±íʾ£¬ÊÇMCS-51µ¥Æ¬»úÖÐ×îСµÄʱ¼äµ¥Î»£¬ÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ£¬CPUÍê³ÉÒ»¸ö×î»ù±¾µÄ¶¯×÷¡£
»úÆ÷ÖÜÆÚ£ºÓÉ12¸öʱÖÓÖÜÆÚ¹¹³É£¬Íê³ÉÒ»¸ö»ù±¾²Ù×÷
Ö¸ÁîÖÜÆÚ£ºÊÇÖ´ÐÐÒ»ÌõÖ¸ÁîËùÐèµÄʱ¼ä£¬¸ù¾ÝÖ¸ÁîµÄ¸´ÔÓÐÔ£¬¿ÉÓÉ1~4¸ö»úÆ÷ÖÜÆÚ¹¹³É¡£ µ±Õñµ´ÆµÂÊΪ12MHzʱ£¬Ò»¸ö»úÆ÷ÖÜÆÚΪ1΢Ãë¡£ 9£®P0¡¢P1¡¢P2ºÍP3¿ÚµÄ½á¹¹ºÍ¹¦ÄÜ·Ö±ðÊÇʲô£¿
´ð£ºP0¿ÚµÄÿһλÓÉ1¸öËø´æÆ÷ ¡¢2¸öÈý̬»º³åÆ÷ ¡¢1¸öÊä³ö¿ØÖƵç·£¨·ÇÃÅ X¡¢ÓëÃÅ¡¢µç×Ó¿ª¹ØMUX¡¢Êä³öÇý¶¯µç·¹¹³É£¬Æä¹¦ÄܼȿÉÒÔ×÷ΪͨÓÃI/O¿ÚʵÏÖÊäÈë/Êä³ö¹¦ÄÜ£¬Ò²¿É×÷Ϊµ¥Æ¬»úµØÖ·ÏߵĵÍ8λºÍÊý¾ÝÏßʵÏÖÍⲿÀ©Õ¹¹¦ÄÜ¡£ÔÚÓÃ×÷ÊäÈëÊä³ö¿Úʱ£¬ÐèÍâ½ÓÉÏÀµç×è¡£
P1¿ÚµÄÿһλÓÉ1¸öËø´æÆ÷ ¡¢1¸ö³¡Ð§Ó¦¹ÜÇý¶¯Æ÷VºÍ2¸öÈý̬ÃÅ»º³åÆ÷¹¹³É£¬Æä×÷ÓÃÊÇÓÃ×÷ÊäÈëÊä³ö¿Ú
P2¿ÚµÄÿһλÓÉ1¸öËø´æÆ÷¡¢2¸öÈý̬»º³åÆ÷¡¢1¸öÊä³ö¿ØÖƵ¥Ôª¡¢1¸öÊä³öÇý¶¯µ¥Ôª¹¹³É£¬Æä¹¦ÄÜÊÇÓÃ×÷ÊäÈëÊä³ö¿Ú£¬»òµØÖ·×ÜÏߵĸß8λ¡£
P3¿ÚµÄÿһλÓÉ1¸öËø´æÆ÷¡¢2¸öÈý̬»º³åÆ÷¡¢1¸öµÚ¶þ¹¦ÄÜ¿ØÖƵ¥Ôª ¡¢1¸öÊä³öÇý¶¯µ¥Ôª¹¹³É£¬Æä×÷ÓÃÊÇÓÃ×÷ÊäÈëÊä³ö¿Ú»òµÚ¶þ¹¦ÄÜ¡£
10£®51µ¥Æ¬»úÒý½ÅALEµÄ×÷ÓÃÊÇʲô£¿µ±51²»Íâ½Ó´æ´¢Æ÷ʱ£¬ALEÉϵÄÊä³öµÄÂö³åƵÂÊÊǶàÉÙ£¿
´ð£º51µ¥Æ¬»úÒý½ÅALEµÄ×÷ÓÃÊǶÔÍⲿ´æ´¢Ñ°Ö·Ê±Ëø´æP0¿ÚÊä³öµÄµÍ8λµØÖ·£¬µ±51²»Íâ½Ó´æ´¢Æ÷ʱ£¬ALEÉϵÄÊä³öµÄÂö³åƵÂÊÊÇfosc/6¡£
µÚ3Õ µ¥Æ¬»úµÄ»ã±àÓïÑÔÓë³ÌÐòÉè¼Æ ϰÌâ
1£®MCS-51µ¥Æ¬»úÓÐÄļ¸ÖÖѰַ·½Ê½£¿ÊÊÓÃÓÚʲôµØÖ·¿Õ¼ä£¿
´ð£ºMCS-51µ¥Æ¬»úÓÐ7ÖÖѰַ·½Ê½£ºÖ±½ÓѰַ¡¢¼Ä´æÆ÷Ѱַ¡¢¼Ä´æÆ÷¼ä½ÓѰַ¡¢Á¢¼´Ñ°Ö·¡¢±äַѰַ¡¢Î»Ñ°Ö·¡¢Ïà¶ÔѰַ¡£
Ö±½ÓѰַ·½Ê½£º²Ù×÷ÊýµÄµØÖ·ÓÉÖ¸ÁîÖ±½Ó¸ø³ö£¬ÊÊÓÃÓÚÆ¬ÄÚRAMµÄËùÓеØÖ·¿Õ¼ä£»Èç MOV A£¬68H
MOV A£¬PSW
¼Ä´æÆ÷Ѱַ·½Ê½£ºÖ¸Áî¸ø³öµÄÊǼĴæÆ÷µÄ±àÂ룬²Ù×÷ÊýÔÚ±àÂëÖ¸¶¨µÄ¼Ä´æÆ÷ÖУ¬ÊÊÓÃÓÚÆ¬ÄÚ00HÖÁ1FHµÄ32¸ö×Ö½Ú£¬ÓÃR0,¡,R7±íʾ£¬Í¨¹ýPSWµÄRS1ºÍRS0Ñ¡Ôñ×éºÅÈ·¶¨¶ÔÓ¦32¸ö×Ö½ÚÖÐµÄÆäÖÐ8¸ö£¬»¹ÓÐÀÛ¼ÓÆ÷A£¬ÒÔ¼°³Ë³ý·¨Ö¸ÁîÖеÄAºÍB¼Ä´æÆ÷£¬Î»Ñ°Ö··½Ê½ÖеIJ¼¶ûÀÛ¼ÓÆ÷C£»
MOV A£¬R1 MUL AB INC DPTR
¼Ä´æÆ÷¼ä½ÓѰַ·½Ê½£ºÖ¸Áî¸ø³öµÄÊǼĴæÆ÷µÄ±àÂ룬²Ù×÷ÊýµØÖ·ÔÚ±àÂëÖ¸¶¨µÄ¼Ä´æÆ÷ÖУ¬ÊÊÓÃÓÚÆ¬ÄÚRAMµÄÈ«²¿¿Õ¼ä£¬ÆäÖÐ52ϵÁÐÖеÄ80HÖÁFFHÖ»ÄÜÓüĴæÆ÷¼ä½ÓѰַ£»Èç MOV A£¬@R0
MOV A£¬@R1 MOVX A£¬@DPTR
Á¢¼´Ñ°Ö··½Ê½£º²Ù×÷Êý±¾ÉíÔÚÖ¸ÁîÖÐÖ±½Ó£¬¸ø³öÊÊÓÃÓÚÓÃ8λÁ¢¼´Êý¶ÔƬÄÚRAMËùÓеØÖ·µ¥Ôª¸³Öµ£¬Ò²¿ÉÓÃ16λÁ¢¼´Êý¶ÔDPTR¸³Öµ£» Èç
MOV A£¬#0E2H MOV DPTR£¬#2000H
±äַѰַ·½Ê½£ºÒÔDPTR»òPC×÷Ϊ»ùµØÖ·¼Ä´æÆ÷£¬ÒÔÀÛ¼ÓÆ÷A×÷Ϊ±äÖ·¼Ä´æÆ÷£¬½«»ùÖ·¼Ä´æÆ÷Óë±äÖ·¼Ä´æÆ÷µÄÄÚÈÝÏà¼ÓÐγɲÙ×÷ÊýµÄʵ¼ÊµØÖ·µÄÒ»ÖÖѰַ·½Ê½£¬±äַѰַ·½Ê½ÊÊÓÃÓÚ³ÌÐò´æ´¢Æ÷ROM£¬½öÓÐÈýÌõÖ¸ÁîÈçÏ£º
MOVC A£¬@A+DPTR MOVC A£¬@A+PC JMP @A+DPTR
λѰַ·½Ê½£ºÖ¸ÁîÖÐÖ±½Ó¸ø³ö²Ù×÷ÊýËùÔÚµ¥ÔªµÄλµØÖ·£¬ÊÊÓÃÓÚÆ¬ÄÚRAMÖеØÖ·20HÖÁ2FHÖеÄ16¸ö×Ö½ÚÖеÄ128¸öλµØÖ·¿Õ¼äºÍ80HÖÁFFHÖеØÖ·ÖпÉÒÔ±»8Õû³ýµÄËùÓÐSFRÖеÄÿ¸öλµØÖ·¿Õ¼ä£»Èç
MOV C£¬7FH MOV F0£¬C MOV C£¬ACC.7
Ïà¶ÔѰַ·½Ê½£ºÎªÏà¶Ô×ªÒÆÖ¸Áî¶øÉ裬ָÁîÖÐÖ±½Ó¸ø³ö×ªÒÆµÄÏà¶ÔÆ«ÒÆÁ¿£¬Æä×ªÒÆÄ¿±êÔÚµ±Ç°Ö¸Áî-128ÖÁ£«127×Ö½Ú·¶Î§ÄڵĵØÖ·¿Õ¼ä¡£Èç
SJMP START
HERE£º SJMP HERE £»µÈЧÓÚ£º SJMP $
2£®MCS-51µ¥Æ¬»úµÄPSW³ÌÐò״̬×ÖÖÐÎÞZERO(Áã)±ê־룬ÔõÑùÅжÏijÄÚ²¿Êý¾Ýµ¥ÔªµÄÄÚÈÝÊÇ·ñΪÁ㣿
´ð£ºMCS-51µ¥Æ¬»úµÄPSW³ÌÐò״̬×ÖÖÐÎÞZERO(Áã)±ê־룬ÅжÏijÄÚ²¿Êý¾Ýµ¥ÔªµÄÄÚÈÝÊÇ·ñΪÁãÊÇÄÜͨ¹ýÈ¡Êýµ½AÀÛ¼ÓÆ÷£¬ÔÙÅжÏAÖеÄÿһλÊÇ·ñΪÁãÀ´È·¶¨ÆäÖµÊÇ·ñΪÁã¡£
3£®±à³Ì½«ÄÚ²¿RAMµÄ20H--30Hµ¥ÔªÄÚÈÝÇåÁã¡£
½â£ºÉèÒ»¸öƬÄÚRAMÖ¸ÕëR0£¬ÏÈÖ¸ÏòÊ×µØÖ·20H£¬Í¨¹ýÀÛ¼ÓÆ÷AÇåÁ㣬Ȼºó²ÉÓüä½ÓѰַ·½Ê½ÒÀ´Î½«AÖеÄÁãÖµ´«Ë͵½Ö¸ÕëËùÖ¸µÄƬÄÚRAMµ¥Ôª£¬Ã¿´«ËÍÒ»¸ö×Ö½Ú£¬µØÖ·Ö¸Õë¼Ó1£¬Ö±µ½´ïµ½µØÖ·Îª30H»ò´ïµ½¼ÆÊýÆ÷¹æ¶¨µÄ17¸ö×Ö½ÚΪֹ¡£ ³ÌÐò1£º
MOV R0,#20H ;ÉèµØÖ·Ö¸Õë³õÖµ CLR A ;ÀÛ¼ÓÆ÷Çå0
CONT: MOV @R0,A ;ÖÃ0Ö¸ÕëËùÖ¸µ¥Ôª INC R0 ;µØÖ·Ö¸Õë¼Ó1
CJNE R0,#31H,CONT ;Ö¸Õë䳬¹ýÖÕµãÔò¼ÌÐø SJMP $ ;ÔÝÍ£ ³ÌÐò2£º
MOV R0,#20H ;ÉèµØÖ·Ö¸Õë³õÖµ CLR A ;ÀÛ¼ÓÆ÷Çå0
MOV R7,#17 ;¼ÆÊýÆ÷¸³³õÖµ£¬´Ó20Hµ½30H¹²17¸ö×Ö½Ú CONT: MOV @R0,A ;ÖÃ0Ö¸ÕëËùÖ¸µ¥Ôª
INC R0 ;µØÖ·Ö¸Õë¼Ó1
DJNZ R7, CONT ;¼ÆÊýÆ÷¼õ1£¬·Ç0£¬Ôò¼ÌÐø SJMP $ ;ÔÝÍ£
4£®±à³Ì²éÕÒÄÚ²¿RAMµÄ32H¡«41Hµ¥ÔªÖÐÊÇ·ñÓÐ0AAHÕâ¸öÊý¾Ý£¬ÈôÓÐÕâÒ»Êý¾Ý£¬Ôò½«50Hµ¥ÔªÖÃΪ0FFH£¬·ñÔò½«50Hµ¥ÔªÇåÁã¡£
½â£ºÉèÒ»¸öƬÄÚRAMÖ¸ÕëR0£¬ÏÈÖ¸ÏòÊ×µØÖ·32H£¬±È½Ï@R0Óë#0AAH£¬ÈôÏàµÈ£¬ÔòÍ˳öÑ»·£¬¸ø50Hµ¥Ôª¸³0FFH£¬Èô²»ÏàµÈ£¬ÔòR0¼Ó1Ϊ¼ÌÐø±È½ÏÏÂÒ»¸ö×Ö½Ú×ö×¼±¸£¬Ö±µ½´ïµ½µØÖ·Îª41H»ò´ïµ½¼ÆÊýÆ÷¹æ¶¨µÄ16¸ö×Ö½ÚΪֹ»¹Ã»ÕÒµ½£¬Ôò¸ø50Hµ¥Ôª¸³00H
³ÌÐò1£º
MOV R0,#32H ;ÉèµØÖ·Ö¸Õë³õÖµ
CONT: CJNE @R0,#0AAH,NEXT;±È½Ï²éÕÒÖµÓëÖ¸ÕëËùÖ¸µ¥ÔªµÄÖµ£¬²»ÏàµÈ×ªÒÆ MOV A,#0FFH ;ÏàµÈ£¬Ôò×¼±¸ºÃÒª¸³µÄ±êÖ¾Öµ0FFH
SJMP DOWN ;ת´æµ½±£´æ½á¹û´¦ NEXT: INC R0 ;Ð޸ĵØÖ·Ö¸Õë
CJNE R0,#42H,CONT ;ÈôÖ¸ÕëδԽ¹ýÖյ㣬Ôò¼ÌÐø
MOV A,#00H ;²éÕÒʧ°Ü£¬Ôò½«00H´æÈë½á¹û±êÖ¾µ¥Ôª DOWN: MOV 50H,A ;½«±È½Ï½á¹û±êÖ¾´æÈë50Hµ¥Ôª
SJMP $ ;ÔÝÍ£ END ³ÌÐò2£º
MOV R7,#16 ;¼ÆÊýÆ÷¸³³õÖµ£¬´Ó20Hµ½30H¹²16¸ö×Ö½Ú MOV R0,#32H ;ÉèµØÖ·Ö¸Õë³õÖµ
CONT: CJNE @R0,#0AAH,NEXT ;±È½Ï²éÕÒÖµÓëÖ¸ÕëËùÖ¸µ¥ÔªµÄÖµ£¬²»ÏàµÈ×ªÒÆ MOV A,#0FFH ;ÏàµÈ£¬Ôò×¼±¸ºÃÒª¸³µÄ±êÖ¾Öµ0FFH SJMP DOWN ;ת´æµ½±£´æ½á¹û´¦ NEXT: INC R0 ;Ð޸ĵØÖ·Ö¸Õë
DJNZ R7,CONT ;¼ÆÊýÆ÷¼õ1£¬·Ç0£¬Ôò¼ÌÐø
MOV A,#00H ;²éÕÒʧ°Ü£¬Ôò½«00H´æÈë½á¹û±êÖ¾µ¥Ôª DOWN: MOV 50H,A ;½«±È½Ï½á¹û±êÖ¾´æÈë50Hµ¥Ôª
SJMP $ ;ÔÝÍ£ END
5£®²éÕÒ20H¡«4FHµ¥ÔªÖгöÏÖ00HµÄ´ÎÊý£¬²¢½«²éÕÒ½á¹û´æÈë50Hµ¥Ôª¡£ ½â£º´Ó20Hµ½4FH¹²48¸ö×Ö½Ú
MOV R7,#48 ;×Ö½Ú¼ÆÊýÆ÷¸³³õÖµ MOV R0,#20H ;ÉèµØÖ·Ö¸Õë³õÖµ
CONT: CJNE @R0,#00H,NEXT ;±È½Ï²éÕÒÖµÓëÖ¸ÕëËùÖ¸µ¥ÔªµÄÖµ£¬²»ÏàµÈ×ªÒÆ INC R6 ;ÏàµÈ£¬0µÄ¸öÊý¼ÆÊýÆ÷¼Ó1
NEXT: INC R0 ;Ð޸ĵØÖ·Ö¸Õë
DJNZ R7,CONT ;¼ÆÊýÆ÷¼õ1£¬·Ç0£¬Ôò¼ÌÐø MOV 50H,R6 ;±£´æOµÄ¸öÊý¼ÆÊýÖµµ½50Hµ¥Ôª SJMP $ ;ÔÝÍ£ END END
6£®ÒÑÖªA=83H£¬R0=17H£¬(17H)=34H£¬Ð´³öÏÂÁгÌÐò¶ÎÖ´ÐÐÖ®ºóµÄAÖеÄÄÚÈÝ¡£ ANL A,#17H
ORL 17H,A XRL A,@R0 CPL A END
´ð£º
ANL A,#17H ;A=03H
ORL 17H,A ;(17H)=0011 0100 ¡Å 0000 0011=0011 0111 XRL A,@R0 ;A= 0000 0011 ¡Å 0011 0111 =0011 0100 CPL A ;A=1100 1011
7£®ÒÑÖªµ¥Æ¬»úµÄ¾§ÕñƵÂÊΪ12MHz£¬·Ö±ðÉè¼ÆÑÓʱΪ0.1s¡¢1sµÄ×Ó³ÌÐò¡£ ´ð£ºÒÑÖªµ¥Æ¬»úµÄ¾§ÕñƵÂÊΪ12MHz£¬Ôò»úÆ÷ÖÜÆÚΪ1us£¬ÑÓʱ×Ó³ÌÐòÊÇͨ¹ýÖ´ÐÐÖ¸ÁîÐòÁÐÖлúÆ÷ÖÜÆÚÊýÀ´´ïµ½£¬Èç¹ûÒª0.1s£¬¼´100ms£¬Ò²¾ÍÊÇ100000us£¬ËùÒÔÐèÒª»úÆ÷ÖÜÆÚÊý´ïµ½100000¡£ÒªÑÓʱ´ïµ½1S£¬¿Éͨ¹ý¶ÔÑÓʱΪ0.1ÃëµÄ×Ó³ÌÐòµ÷ÓÃ10´ÎÀ´ÊµÏÖ¡£
DELAY100MS: MOV R6,#200 ;1¸ö»úÆ÷ÖÜÆÚ D1: MOV R7,#250 ;1¸ö»úÆ÷ÖÜÆÚ D2: NOP ;1¸ö»úÆ÷ÖÜÆÚ
DJNZ R7,D2 ;2¸ö»úÆ÷ÖÜÆÚ£¬3*251=753
DJNZ R6,D1 ;2¸ö»úÆ÷ÖÜÆÚ£¬(1+753+2)*132=99792 RET ;2¸ö»úÆ÷ÖÜÆÚ£¬1+99792+2=99795,Ô¼100ms DELAY1S: MOV R7,#10 ;¼ÆÊý10´Î 1
LOOP: ACALL DELAY100MS ;ÑÓʱ100ms×Ó³ÌÐò 99795+2 DJNZ R7,LOOP ;δ´ïµ½10´ÎÔò¼ÌÐø 10*(2+99795+2) RET ;·µ»Ø2+10*(2+99795+2)=997992
8£®ÄÚ²¿RAM´Ó20Hµ¥Ôª¿ªÊ¼´¦ÓÐÒ»Êý¾Ý¿é£¬ÒÔODHΪ½áÊø±êÖ¾£¬ÊÔͳ¼Æ¸ÃÊý¾Ý¿éµÄ³¤¶È£¬½«¸ÃÊý¾Ý¿éË͵½ÍⲿÊý¾Ý´æ´¢Æ÷7E01H¿ªÊ¼µÄµ¥Ôª£¬²¢½«³¤¶È´æÈë7E00Hµ¥Ôª¡£
½â£º´Ó20HµÄÖ¸ÕëÓÃR0£¬´ÓÍⲿRAM7E01¿ªÊ¼µÄÖ¸ÕëÓÃDPTR£¬¼ÆÊýÆ÷ÓÃR7 MOV R7,#0 ;×Ö½Ú¼ÆÊýÆ÷¸³³õÖµ
MOV R0,#20H ;ÉèÆ¬ÄÚRAMµØÖ·Ö¸Õë³õÖµ
MOV DPTR,#7E01H ;ÉèÆ¬ÍâRAMµØÖ·Ö¸Õë³õÖµ CONT: MOV A,@R0 ;ȡƬÄÚRAMÖеÄÒ»¸ö×Ö½Ú MOVX @DPTR,A ;´æÈëÆ¬ÍâRAMÖ¸ÕëËùÖ¸µ¥Ôª INC R7 ;³¤¶È¼ÆÊýÆ÷¼Ó1
INC R0 ;ƬÄÚRAMµØÖ·Ö¸Õë¼Ó1 INC DPTR ;ƬÍâRAMµØÖ·Ö¸Õë¼Ó1 CJNE A,#0DH,CONT ;δ´ïµ½½áÊø±êÖ¾ MOV A,R7 ;È¡¿é¼ÆÊý³¤¶ÈÖµ MOVX @DPTR,A ;±£´æ SJMP $ ;ÔÝÍ£ END
9£®ÄÚ²¿RAM´ÓDATA¿ªÊ¼µÄÇøÓòÖдæ·Å×Å10¸öµ¥×Ö½ÚÊ®½øÖÆÊý£¬ÇóÆäÀۼӺͣ¬²¢½«½á¹û´æÈëSUMºÍSUM+1µ¥Ôª¡£
½â£ºR7¼ÆÊý£¬R6±£´æÀۼӺ͸ß8룬R0ÓÃ×÷µØÖ·Ö¸Õë ORG 0000H LJMP MAIN ORG 100H SUM EQU 30H DATAA EQU 40H
MAIN: MOV R7,#10 ;×Ö½Ú¼ÆÊýÆ÷¸³³õÖµ MOV R0,#DATAA ;ÉèÆ¬ÄÚRAMµØÖ·Ö¸Õë³õÖµ CLR A ;ÀÛ¼ÓÆ÷Çå0
MOV R6,A ;ÀÛ¼Ó½á¹ûµÄ¸ß8λ
CONT: ADD A,@R0 ;¼ÓRAMÖеÄÒ»¸ö×Ö½Úµ½ACC DA A
JNC NEXT ;ÈôÎÞ½øÎ»Ôò²»Óùܸß8λ INC R6 ;ÓнøÎ»£¬¸ß8λ¼Ó1
NEXT: INC R0 ;ƬÄÚRAMµØÖ·Ö¸Õë¼Ó1 DJNZ R7,CONT ;δÍê¼ÌÐø MOV SUM,A ;±£´æµÍ8λ MOV SUM+1,R6 ;±£´æ¸ß8λ SJMP $ ;ÔÝÍ£ END
10£®ÄÚ²¿RAM´ÓDATA1ºÍDATA2µ¥Ôª¿ªÊ¼´¦´æ·Å×ÅÁ½¸öµÈ³¤µÄÊý¾Ý¿é£¬Êý¾Ý¿éµÄ³¤¶ÈÔÚLENµ¥ÔªÖС£Çë±à³Ì¼ì²éÕâÁ½¸öÊý¾Ý¿éÊÇ·ñÏàµÈ£¬ÈôÏàµÈ£¬½«0FFHдÈëRESULTµ¥Ôª£¬·ñÔò½«0дÈëRESULTµ¥Ôª¡£
½â£º´ÓDATA1¿ªÊ¼µÄÖ¸ÕëÓÃR0£¬´ÓDATA2¿ªÊ¼µÄÖ¸ÕëÓÃR1£¬¼ÆÊýÆ÷ÓÃR7 LEN EQU 10 DATA1 EQU 30H DATA2 EQU 40H RESULT EQU 50H
MOV R7,#LEN ;×Ö½Ú¼ÆÊýÆ÷¸³³õÖµ
MOV R0,#DATA1 ;ÉèÆ¬ÄÚRAMµØÖ·Ö¸Õë³õÖµ MOV R1,#DATA2 ;ÉèÆ¬ÍâRAMµØÖ·Ö¸Õë³õÖµ
CONT: MOV A,@R0 ;ȡƬÄÚRAM R0ËùÖ¸µÄµÄÒ»¸ö×Ö½Ú
MOV 7FH,@R1 ;½«R1ËùÖ¸µ¥ÔªÄÚÈÝÈ¡µ½Æ¬ÄÚRAMµØÖ·7FHÖÐ CJNE A,7FH,NOEQ ;±È½Ï£¬²»ÏàµÈÔò½áÊø
INC R0 ;DATA1 RAMµØÖ·Ö¸Õë¼Ó1 INC R1 ;DATA2 RAMµØÖ·Ö¸Õë¼Ó1 DJNZ R7,CONT ;δÍ꣬¼ÌÐø MOV A,#0FFH ;ÏàµÈ,×¼±¸Ð´ÈëFFH SJMP DOWN ;תдÈë½á¹û´¦
NOEQ: MOV A,#0 ;²»ÏàµÈ,×¼±¸Ð´Èë00H DOWN: MOV RESULT,A ;±£´æ±È½Ï½á¹û±êÖ¾ SJMP $ ;ÔÝÍ£ END
11£®±àÖÆ³ÌÐò£¬½«ÄÚ²¿RAMÖÐM1¡¢M2¡¢M3ºÍM4µ¥ÔªÖеÄÎÞ·ûºÅÊýxl¡¢x2¡¢x3ºÍx4Ïà¼Ó£¬²¢°ÑºÍ´æÈëROºÍR1(R0ÖÐΪ¸ß8λ)ÖС£
½â£º
M1 EQU 30H M2 EQU 40H M3 EQU 45H M4 EQU 4FH
MOV A,M1 ;È¡µÚÒ»¸öÊý ADD A,M2 ;ÓëµÚ¶þ¸öÊýÏà¼Ó
JNC NEXT1 ;Èç¹ûÎÞ½øÎ»£¬Ôò×ªÒÆÖÁµÚÈý¸öÏà¼Ó MOV R0,#1 ;ÓнøÎ»£¬¸ß8λÖÃ1 NEXT1: ADD A,M3 ;ÓëµÚÈý¸öÊýÏà¼Ó
JNC NEXT2 ;ûÓнøÎ»£¬ÔòתÖÁµÚËĸöÊýÏà¼Ó INC R0 ;ÓнøÎ»£¬¸ß8λ¼Ó1 NEXT2: ADD A,M4 ;ÓëµÚËĸöÊýÏà¼Ó JNC NEXT3 ;ûÓнøÎ»£¬ÔòתÖÁ½áÊø INC R0 ;ÓнøÎ»£¬¸ß8λÔÙ¼Ó1 NEXT3: MOV R1,A ;µÍ8λ±£´æµ½R1 SJMP $ ;ÔÝÍ£ END
µÚ4Õ µ¥Æ¬»úµÄC51ÓïÑÔ Ï°Ìâ
1£®CÓïÑÔµÄÓŵãÊÇʲô£¿C³ÌÐòµÄÖ÷Òª½á¹¹ÌصãÊÇʲô£¿
´ð£ºCÓïÑÔÊÇÒ»Öָ߼¶ÓïÑÔ£¬Ñ§Ï°±ÈµÍ¼¶ÈÝÒ×£¬²»ÐèÒª¾ßÌå×éÖ¯¡¢·ÖÅä´æ´¢Æ÷×ÊÔ´ºÍ´¦Àí¶Ë¿ÚÊý¾Ý£¬¿ÉÒÔÖ±½ÓÇý¶¯µ¥Æ¬»úµÄËùÓÐ×ÊÔ´¡£
C³ÌÐòÒÔº¯ÊýΪµ¥Î»£¬ÓÉÒ»¸öÖ÷º¯ÊýºÍÈô¸É¸öÆäËûº¯Êý¹¹³É£¬Ö÷º¯ÊýÊdzÌÐòµÄÈë¿Ú£¬ÆäËûº¯ÊýÓÉÖ÷º¯ÊýÖ±½Ó»ò¼ä½Óµ÷ÓᣳÌÐò¿ÉÒÔÓÉÒ»¸öÎļþ»ò¶à¸öÎļþ×é³É¡£ÎļþÀàÐͰüÀ¨Í·ÎļþºÍCÓïÑÔÔ´Îļþ£¬Ò²¿ÉÒÔÊÇ»ã±àÓïÑÔÎļþ£¬C³ÌÐò¿ÉÓë»ã±àÓïÑÔ»ìºÏ±à³Ì¡£
2£®C51ÓïÑԵıäÁ¿¶¨Òå°üº¬ÄÄЩ¹Ø¼üÒòËØ£¿ÎªºÎÕâÑù¿¼ÂÇ£¿ ´ð£ºCÓïÑԵıäÁ¿¶¨Òå¸ñʽÈçÏ£º [´æ´¢ÖÖÀà] Êý¾ÝÀàÐÍ [´æ´¢ÀàÐÍ] ±äÁ¿Ãû ÆäÖУº
´æ´¢ÖÖÀàÓë±ê×¼CÓïÑÔÏàͬ£¬°üÀ¨£º×Ô¶¯ÐÍ(auto)¡¢ÍⲿÐÍ(extern)¡¢¾²Ì¬ÐÍ(static)¡¢¼Ä´æÆ÷ÐÍ(register)¡£
Êý¾ÝÀàÐͳýÁ˰üº¬±ê×¼CÓïÑÔÀàÐ͵Ä×Ö·ûÐÍ(char)£¬ÕûÐÍ(int)£¬³¤ÕûÐÍ(long)£¬¸¡µãÐÍ(float)£¬Ë«¾«¶ÈÐÍ(double)Í⣬»¹Óжþ½øÖÆÎ»ÐÍ(bit)£¬ÌØÊ⹦ÄܼĴæÆ÷ÐÍ(sfr)£¬SFR¿ÉλѰַµÄλÀàÐÍ(sbit)¡£
´æ´¢ÀàÐͰüÀ¨£ºÆ¬ÄÚRAMÇø(data)¡¢Æ¬ÄÚ¿ÉÎ»Ñ°Ö·Çø(bdata)£¬Æ¬ÄÚRAM¼ä½ÓÑ°Ö·Çø(idata)£¬Æ¬ÍâRAMÒ³Ñ°Ö·Çø(pdata)£¬Æ¬ÍâRAMÇø(xdata)¡¢ROMÇø(code)¡£
Ö»ËùÒԱȱê×¼CÓïÑÔ¶àÁË´æ´¢ÀàÐÍ£¬¾ÍÊÇÒòΪMCS£51µ¥Æ¬»úµÄ´æ´¢½á¹¹ÖÐÓÐËĸöÎïÀí´æ´¢¿Õ¼ä(ƬÄÚRAM¡¢Æ¬ÄÚROM£¬Æ¬ÍâRAM£¬Æ¬ÍâROM)£¬Èý¸öÂß¼µØÖ·¿Õ¼ä(ƬÄÚRAM£¬Æ¬ÍâRAM£¬ROM)£¬¶øÇÒÓжàÖÖѰַ·½Ê½£¨Ö±½ÓѰַ¡¢¼ä½ÓѰַ¡¢Ò³ÃæÑ°Ö·¡¢Î»Ñ°Ö·£©ËùÖ£¬ËùÒÔÔÚ¶¨Òå±äÁ¿Ê±£¬Òª¸ù¾ÝÆäËùÔÚλÖúÍѰַ·½Ê½Ã÷È·Ö¸¶¨´æ´¢ÀàÐÍ¡£
3£®C51Óë»ã±àÓïÑÔµÄÌØµã¸÷ÓÐÄÄЩ£¿ÔõÑùʵÏÖÁ½ÕßµÄÓÅÊÆ»¥²¹£¿
´ð£ºC51Êǽṹ»¯ÓïÑÔ£¬´úÂë½ô´Õ£»½Ó½ü×ÔÈ»ÓïÑÔ£¬³ÌÐò¿É¶ÁÐÔÇ¿£¬Ò×ÓÚµ÷ÊÔ¡¢Î¬»¤£»¿âº¯Êý·á¸»£¬±à³Ì¹¤×÷Á¿Ð¡£¬¿Éʹ²úÆ·¿ª·¢ÖÜÆÚ¶Ì£»¾ßÓлúÆ÷¼¶¿ØÖÆÄÜÁ¦£¬¹¦ÄܺÜÇ¿£¬ÊʺÏÓÚǶÈëʽϵͳ¿ª·¢£»»ã±àÖ¸ÁîÎ޹أ¬Ò×ÓÚÕÆÎÕ£¬ÉÏÊÖ¿ì¡£
»ã±àÓïÑÔÓŵãÊDZàдµÄ³ÌÐò´úÂ뾫Á¶¡¢Ö´ÐÐËٶȿ죬ÔÚÏàͬ¹¦ÄÜÏ£¬»ã±àÓïÑÔ³ÌÐò¿ÉÄܱÈCÓïÑÔ³ÌÐòЧÂʸߡ£È±µãÊǶԳÌÐòÔ±ÒªÇó¸ß£¬±ØÐë¶Ôµ¥Æ¬»úµÄÓ²¼þ½á¹¹·Ç³£ÊìϤ²ÅÄܱà³Ì£¬²»±ãÓÚ±àд±È½Ï¸´ÔӵijÌÐò¡£
¿É¸ù¾ÝÐèÒª¶ÔÒªÇóʱ¼äÐÔºÜÇ¿µÄ´úÂëÓûã±àÓïÑÔ±àд£¬ÆäËü²¿·ÖÓÃCÓïÑÔ±àд£¬Á½Õß»ìºÏ±à³Ì¾Í¿ÉÒÔʵÏÖÓÅÊÆ»¥²¹¡£
4£®Ö¸³öÏÂÃæ³ÌÐòµÄÓï·¨´íÎó£º #include
for(i=O; i<=255; ¡±++¡±); }
´ð£º
#include
a=C£» //aºÍC±ØÐëÏȶ¨Òå²Å¿ÉʹÓà int a=7,C //ȱ·ÖºÅ£¬Ó¦¸ÃÌáÔÚʹÓÃǰ˵Ã÷
delay(10) //ÑÓʱ×Ó³ÌÐò±ØÐëÏȶ¨Ò壬»òÏÈÓк¯ÊýÔÐÍ˵Ã÷ void delay();{ //×÷Ϊº¯Êý¶¨Ò壬Óк¯Êý¶¨Òå²»ÄÜǶÌ×µÄÎÊÌ⣬
//¼´²»ÄÜÔÚÒ»¸öº¯ÊýÄÚ¶¨ÒåÁíÒ»¸öº¯Êý£¬¶øÇÒ¡°{¡±Ç°²»Ó¦ÓзֺŠ//×÷Ϊº¯ÊýÔÐÍ˵Ã÷£¬Ó¦¸Ã·ÅÔÚº¯Êýµ÷ÓÃ֮ǰ,ÇÒÆäºó²»Ó¦¸Ã½Óº¯ÊýÌå cgar i£» //×Ö·ûÐÍÓ¦¸ÃÊÇunsigned char for(i=O; i<=255; ¡±++¡±);// ¡±++¡±Ó¦¸Ä³Éi++ }
//Ö÷º¯ÊýûÓнáÊø£¬È±¡±}¡±
5£®¶¨Òå±äÁ¿a£¬b£¬c£¬ÆäÖÐaΪÄÚ²¿RAMµÄ¿ÉÎ»Ñ°Ö·ÇøµÄ×Ö·û±äÁ¿£¬bΪÍⲿÊý¾Ý´æ´¢Çø¸¡µãÐͱäÁ¿£¬cΪָÏò int ÐÍ xdata ÇøµÄÖ¸Õë¡£
´ð£º char bdata a; float xdata b; int xdata *c;
6£®±à³Ì½«8051µÄÄÚ²¿Êý¾Ý´æ´¢Æ÷20Hµ¥ÔªºÍ35Hµ¥ÔªµÄÊý¾ÝÏà³Ë£¬½á¹û´æµ½ÍⲿÊý¾Ý´æ´¢Æ÷ÖÐ(ÈÎÒâλÖÃ)¡£
½â£º·½·¨Ò»£ºÓÃǶÈëʽ»ã±àÓïÑÔʵÏÖ #include
{ #pragma asm MOV A,20H MOV B,35H MUL AB
MOV DPTR,#1234H MOVX @DPTR,A INC DPTR MOV A,B MOVX @DPTR,A #pragma endasm }
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ #include
unsigned int xdata x; unsigned char *ptr,a,b; ptr=0x25; a=*ptr; ptr=0x30;
b=*ptr; x=a*b; }
7£®8051µÄƬÄÚÊý¾Ý´æ´¢Æ÷25Hµ¥ÔªÖдæ·ÅÓÐÒ»¸ö0¡«10µÄÕûÊý£¬±à³ÌÇóÆäƽ·½¸ù(¾«È·µ½5λÓÐЧÊý×Ö)£¬½«Æ½·½¸ù·Åµ½30Hµ¥ÔªÎªÊ×Ö·µÄÄÚ´æÖС£
½â£º·½·¨Ò»£ºÓÃCÓïÑÔÓë»ã±àÓïÑÔ»ìºÏ±à³ÌʵÏÖ //ÓÃCÓïÑÔ±àдµÄÖ÷º¯ÊýMAIN.C #include
char a=0x25,c; float f; c=getdata(a); f=sqrt(c); }
;Óûã±àÓïÑÔ±àдµÄÈ¡Êý¾Ý×Óº¯Êý£¬Ö»ÓÐÒ»¸öµØÖ·²ÎÊýÔÚR7ÖУ¬·µ»ØÖµÎªÖ¸¶¨µØÖ·µ¥ÔªÖеÄÄÚÈÝ£¬ÓÃR7·µ»ØÖ÷º¯Êý¡£
PUBLIC _GETDATA DE SEGMENT CODE RSEG DE
_GETDATA: MOV A,R7 ;È¡µØÖ·²ÎÊý MOV R0,A MOV A,@R0
MOV R7,A ;·µ»ØµØÖ·µ¥ÔªÖеÄÄÚÈÝ EXIT: RET END
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ //MAIN.C
#include
}
8£®½«ÍⲿRAM 10H¡«15Hµ¥ÔªµÄÄÚÈÝ´«Ë͵½ÄÚ²¿RAM 10H¡«15Hµ¥Ôª¡£ ½â£º·½·¨Ò»£º²ÉÓÃCÓïÑÔÓë»ã±àÓïÑÔ»ìºÏ±à³Ì
//ÓÃCÓïÑÔ±àдµÄÖ÷º¯ÊýMAIN.C #include
char a=0x10,b=0x06; movdata(a,b); }
;Óûã±àÓïÑÔ±àдµÄÒÆ¶¯Êý¾Ý×Óº¯ÊýMOVDATA£¬ÆäÖеÚÒ»¸ö²ÎÊýÔÚR7ÖÐΪÊ×µØÖ·£¬µÚ¶þ¸ö²ÎÊýÔÚR5ÖÐΪ×Ö½ÚÊý
PUBLIC _MOVDATA DE SEGMENT CODE RSEG DE
_MOVDATA: MOV A,R7 ;È¡²ÎÊý MOV R0,A
LOOP: MOVX A,@R0 MOV @R0,A DJNZ R5,LOOP EXIT: RET
END
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ //MAIN.C
#include
char n=6;
char *ptr1=0x10; char xdata *ptr2; ptr2=0x20; while(n--){ *ptr2++=*ptr1++; } }
9£®ÄÚ²¿RAM 20H¡¢21HºÍ22H¡¢23Hµ¥Ôª·Ö±ð´æ·Å×ÅÁ½¸öÎÞ·ûºÅµÄ16λÊý£¬½«ÆäÖеĴóÊýÖÃÓÚ24HºÍ25Hµ¥Ôª¡£
½â£º·½·¨Ò»£º #include
unsigned int *ptr; //ÉèÖÃÒ»¸öÄÚ²¿RAMÖ¸Õë unsigned int x,y,z;
ptr=0x20; //Ö¸Ïò0x20µ¥Ôª x=*ptr; //È¡µÚÒ»¸öÊý ptr=0x22; //Ö¸Ïò0x22µ¥Ôª y=*ptr; //È¡µÚ¶þ¸öÊý
z=(x>y)?x:y; //½«Á½ÊýÖеĽϴóÕ߸³¸øz ptr=0x24; //Ö¸ÏòµØÖ·Îª0x24µÄÄ¿±êµ¥Ôª *ptr=z; //½«´óÊý´æÈëÄ¿±êµ¥Ôª } ·½·¨¶þ£º
#include
unsigned int x,y,z;
x=DBYTE[0X20]*256+DBYTE[0X21]; y=DBYTE[0X22]*256+DBYTE[0X23]; z=(x>y)?x:y; //½«Á½ÊýÖеĽϴóÕ߸³¸øz DBYTE[0X24]=z/256; DBYTE[0X25]=z%6; } ·½·¨Èý£º
#include
unsigned int y _at_ 0x22; unsigned int z _at_ 0x24; void main() {
z=(x>y)?x:y; }
µÚ4Õ µ¥Æ¬»úµÄC51ÓïÑÔ Ï°Ìâ
1£®CÓïÑÔµÄÓŵãÊÇʲô£¿C³ÌÐòµÄÖ÷Òª½á¹¹ÌصãÊÇʲô£¿
´ð£ºCÓïÑÔÊÇÒ»Öָ߼¶ÓïÑÔ£¬Ñ§Ï°±ÈµÍ¼¶ÈÝÒ×£¬²»ÐèÒª¾ßÌå×éÖ¯¡¢·ÖÅä´æ´¢Æ÷×ÊÔ´ºÍ´¦Àí¶Ë¿ÚÊý¾Ý£¬¿ÉÒÔÖ±½ÓÇý¶¯µ¥Æ¬»úµÄËùÓÐ×ÊÔ´¡£
C³ÌÐòÒÔº¯ÊýΪµ¥Î»£¬ÓÉÒ»¸öÖ÷º¯ÊýºÍÈô¸É¸öÆäËûº¯Êý¹¹³É£¬Ö÷º¯ÊýÊdzÌÐòµÄÈë¿Ú£¬ÆäËûº¯ÊýÓÉÖ÷º¯ÊýÖ±½Ó»ò¼ä½Óµ÷ÓᣳÌÐò¿ÉÒÔÓÉÒ»¸öÎļþ»ò¶à¸öÎļþ×é³É¡£ÎļþÀàÐͰüÀ¨Í·ÎļþºÍCÓïÑÔÔ´Îļþ£¬Ò²¿ÉÒÔÊÇ»ã±àÓïÑÔÎļþ£¬C³ÌÐò¿ÉÓë»ã±àÓïÑÔ»ìºÏ±à³Ì¡£
2£®C51ÓïÑԵıäÁ¿¶¨Òå°üº¬ÄÄЩ¹Ø¼üÒòËØ£¿ÎªºÎÕâÑù¿¼ÂÇ£¿ ´ð£ºCÓïÑԵıäÁ¿¶¨Òå¸ñʽÈçÏ£º [´æ´¢ÖÖÀà] Êý¾ÝÀàÐÍ [´æ´¢ÀàÐÍ] ±äÁ¿Ãû ÆäÖУº
´æ´¢ÖÖÀàÓë±ê×¼CÓïÑÔÏàͬ£¬°üÀ¨£º×Ô¶¯ÐÍ(auto)¡¢ÍⲿÐÍ(extern)¡¢¾²Ì¬ÐÍ(static)¡¢¼Ä´æÆ÷ÐÍ(register)¡£
Êý¾ÝÀàÐͳýÁ˰üº¬±ê×¼CÓïÑÔÀàÐ͵Ä×Ö·ûÐÍ(char)£¬ÕûÐÍ(int)£¬³¤ÕûÐÍ(long)£¬¸¡µãÐÍ(float)£¬Ë«¾«¶ÈÐÍ(double)Í⣬»¹Óжþ½øÖÆÎ»ÐÍ(bit)£¬ÌØÊ⹦ÄܼĴæÆ÷ÐÍ(sfr)£¬SFR¿ÉλѰַµÄλÀàÐÍ(sbit)¡£
´æ´¢ÀàÐͰüÀ¨£ºÆ¬ÄÚRAMÇø(data)¡¢Æ¬ÄÚ¿ÉÎ»Ñ°Ö·Çø(bdata)£¬Æ¬ÄÚRAM¼ä½ÓÑ°Ö·Çø(idata)£¬Æ¬ÍâRAMÒ³Ñ°Ö·Çø(pdata)£¬Æ¬ÍâRAMÇø(xdata)¡¢ROMÇø(code)¡£
Ö»ËùÒԱȱê×¼CÓïÑÔ¶àÁË´æ´¢ÀàÐÍ£¬¾ÍÊÇÒòΪMCS£51µ¥Æ¬»úµÄ´æ´¢½á¹¹ÖÐÓÐËĸöÎïÀí´æ´¢¿Õ¼ä(ƬÄÚRAM¡¢Æ¬ÄÚROM£¬Æ¬ÍâRAM£¬Æ¬ÍâROM)£¬Èý¸öÂß¼µØÖ·
¿Õ¼ä(ƬÄÚRAM£¬Æ¬ÍâRAM£¬ROM)£¬¶øÇÒÓжàÖÖѰַ·½Ê½£¨Ö±½ÓѰַ¡¢¼ä½ÓѰַ¡¢Ò³ÃæÑ°Ö·¡¢Î»Ñ°Ö·£©ËùÖ£¬ËùÒÔÔÚ¶¨Òå±äÁ¿Ê±£¬Òª¸ù¾ÝÆäËùÔÚλÖúÍѰַ·½Ê½Ã÷È·Ö¸¶¨´æ´¢ÀàÐÍ¡£
3£®C51Óë»ã±àÓïÑÔµÄÌØµã¸÷ÓÐÄÄЩ£¿ÔõÑùʵÏÖÁ½ÕßµÄÓÅÊÆ»¥²¹£¿
´ð£ºC51Êǽṹ»¯ÓïÑÔ£¬´úÂë½ô´Õ£»½Ó½ü×ÔÈ»ÓïÑÔ£¬³ÌÐò¿É¶ÁÐÔÇ¿£¬Ò×ÓÚµ÷ÊÔ¡¢Î¬»¤£»¿âº¯Êý·á¸»£¬±à³Ì¹¤×÷Á¿Ð¡£¬¿Éʹ²úÆ·¿ª·¢ÖÜÆÚ¶Ì£»¾ßÓлúÆ÷¼¶¿ØÖÆÄÜÁ¦£¬¹¦ÄܺÜÇ¿£¬ÊʺÏÓÚǶÈëʽϵͳ¿ª·¢£»»ã±àÖ¸ÁîÎ޹أ¬Ò×ÓÚÕÆÎÕ£¬ÉÏÊÖ¿ì¡£
»ã±àÓïÑÔÓŵãÊDZàдµÄ³ÌÐò´úÂ뾫Á¶¡¢Ö´ÐÐËٶȿ죬ÔÚÏàͬ¹¦ÄÜÏ£¬»ã±àÓïÑÔ³ÌÐò¿ÉÄܱÈCÓïÑÔ³ÌÐòЧÂʸߡ£È±µãÊǶԳÌÐòÔ±ÒªÇó¸ß£¬±ØÐë¶Ôµ¥Æ¬»úµÄÓ²¼þ½á¹¹·Ç³£ÊìϤ²ÅÄܱà³Ì£¬²»±ãÓÚ±àд±È½Ï¸´ÔӵijÌÐò¡£
¿É¸ù¾ÝÐèÒª¶ÔÒªÇóʱ¼äÐÔºÜÇ¿µÄ´úÂëÓûã±àÓïÑÔ±àд£¬ÆäËü²¿·ÖÓÃCÓïÑÔ±àд£¬Á½Õß»ìºÏ±à³Ì¾Í¿ÉÒÔʵÏÖÓÅÊÆ»¥²¹¡£
4£®Ö¸³öÏÂÃæ³ÌÐòµÄÓï·¨´íÎó£º #include
for(i=O; i<=255; ¡±++¡±); } ´ð£º
#include
a=C£» //aºÍC±ØÐëÏȶ¨Òå²Å¿ÉʹÓà int a=7,C //ȱ·ÖºÅ£¬Ó¦¸ÃÌáÔÚʹÓÃǰ˵Ã÷
delay(10) //ÑÓʱ×Ó³ÌÐò±ØÐëÏȶ¨Ò壬»òÏÈÓк¯ÊýÔÐÍ˵Ã÷ void delay();{ //×÷Ϊº¯Êý¶¨Ò壬Óк¯Êý¶¨Òå²»ÄÜǶÌ×µÄÎÊÌ⣬
//¼´²»ÄÜÔÚÒ»¸öº¯ÊýÄÚ¶¨ÒåÁíÒ»¸öº¯Êý£¬¶øÇÒ¡°{¡±Ç°²»Ó¦ÓзֺŠ//×÷Ϊº¯ÊýÔÐÍ˵Ã÷£¬Ó¦¸Ã·ÅÔÚº¯Êýµ÷ÓÃ֮ǰ,ÇÒÆäºó²»Ó¦¸Ã½Óº¯ÊýÌå cgar i£» //×Ö·ûÐÍÓ¦¸ÃÊÇunsigned char for(i=O; i<=255; ¡±++¡±);// ¡±++¡±Ó¦¸Ä³Éi++ }
//Ö÷º¯ÊýûÓнáÊø£¬È±¡±}¡±
5£®¶¨Òå±äÁ¿a£¬b£¬c£¬ÆäÖÐaΪÄÚ²¿RAMµÄ¿ÉÎ»Ñ°Ö·ÇøµÄ×Ö·û±äÁ¿£¬bΪÍⲿÊý¾Ý´æ´¢Çø¸¡µãÐͱäÁ¿£¬cΪָÏò int ÐÍ xdata ÇøµÄÖ¸Õë¡£
´ð£º char bdata a; float xdata b; int xdata *c;
6£®±à³Ì½«8051µÄÄÚ²¿Êý¾Ý´æ´¢Æ÷20Hµ¥ÔªºÍ35Hµ¥ÔªµÄÊý¾ÝÏà³Ë£¬½á¹û´æµ½ÍⲿÊý¾Ý´æ´¢Æ÷ÖÐ(ÈÎÒâλÖÃ)¡£
½â£º·½·¨Ò»£ºÓÃǶÈëʽ»ã±àÓïÑÔʵÏÖ #include
MUL AB
MOV DPTR,#1234H MOVX @DPTR,A INC DPTR MOV A,B MOVX @DPTR,A #pragma endasm }
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ #include
unsigned int xdata x; unsigned char *ptr,a,b; ptr=0x25; a=*ptr; ptr=0x30; b=*ptr; x=a*b; }
7£®8051µÄƬÄÚÊý¾Ý´æ´¢Æ÷25Hµ¥ÔªÖдæ·ÅÓÐÒ»¸ö0¡«10µÄÕûÊý£¬±à³ÌÇóÆäƽ·½¸ù(¾«È·µ½5λÓÐЧÊý×Ö)£¬½«Æ½·½¸ù·Åµ½30Hµ¥ÔªÎªÊ×Ö·µÄÄÚ´æÖС£
½â£º·½·¨Ò»£ºÓÃCÓïÑÔÓë»ã±àÓïÑÔ»ìºÏ±à³ÌʵÏÖ //ÓÃCÓïÑÔ±àдµÄÖ÷º¯ÊýMAIN.C #include
char a=0x25,c; float f; c=getdata(a); f=sqrt(c); }
;Óûã±àÓïÑÔ±àдµÄÈ¡Êý¾Ý×Óº¯Êý£¬Ö»ÓÐÒ»¸öµØÖ·²ÎÊýÔÚR7ÖУ¬·µ»ØÖµÎªÖ¸¶¨µØÖ·µ¥ÔªÖеÄÄÚÈÝ£¬ÓÃR7·µ»ØÖ÷º¯Êý¡£
PUBLIC _GETDATA DE SEGMENT CODE RSEG DE
_GETDATA: MOV A,R7 ;È¡µØÖ·²ÎÊý MOV R0,A MOV A,@R0
MOV R7,A ;·µ»ØµØÖ·µ¥ÔªÖеÄÄÚÈÝ EXIT: RET END
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ //MAIN.C
#include
8£®½«ÍⲿRAM 10H¡«15Hµ¥ÔªµÄÄÚÈÝ´«Ë͵½ÄÚ²¿RAM 10H¡«15Hµ¥Ôª¡£ ½â£º·½·¨Ò»£º²ÉÓÃCÓïÑÔÓë»ã±àÓïÑÔ»ìºÏ±à³Ì
//ÓÃCÓïÑÔ±àдµÄÖ÷º¯ÊýMAIN.C #include
char a=0x10,b=0x06; movdata(a,b); }
;Óûã±àÓïÑÔ±àдµÄÒÆ¶¯Êý¾Ý×Óº¯ÊýMOVDATA£¬ÆäÖеÚÒ»¸ö²ÎÊýÔÚR7ÖÐΪÊ×µØÖ·£¬µÚ¶þ¸ö²ÎÊýÔÚR5ÖÐΪ×Ö½ÚÊý
PUBLIC _MOVDATA DE SEGMENT CODE RSEG DE
_MOVDATA: MOV A,R7 ;È¡²ÎÊý MOV R0,A
LOOP: MOVX A,@R0 MOV @R0,A DJNZ R5,LOOP EXIT: RET END
·½·¨¶þ£ºµ¥ÓÃCÓïÑÔ±à³ÌʵÏÖ //MAIN.C
#include
char n=6;
char *ptr1=0x10; char xdata *ptr2; ptr2=0x20; while(n--){ *ptr2++=*ptr1++; } }
9£®ÄÚ²¿RAM 20H¡¢21HºÍ22H¡¢23Hµ¥Ôª·Ö±ð´æ·Å×ÅÁ½¸öÎÞ·ûºÅµÄ16λÊý£¬½«ÆäÖеĴóÊýÖÃÓÚ24HºÍ25Hµ¥Ôª¡£
½â£º·½·¨Ò»£º #include
unsigned int *ptr; //ÉèÖÃÒ»¸öÄÚ²¿RAMÖ¸Õë unsigned int x,y,z;
ptr=0x20; //Ö¸Ïò0x20µ¥Ôª x=*ptr; //È¡µÚÒ»¸öÊý ptr=0x22; //Ö¸Ïò0x22µ¥Ôª
y=*ptr; //È¡µÚ¶þ¸öÊý
z=(x>y)?x:y; //½«Á½ÊýÖеĽϴóÕ߸³¸øz ptr=0x24; //Ö¸ÏòµØÖ·Îª0x24µÄÄ¿±êµ¥Ôª *ptr=z; //½«´óÊý´æÈëÄ¿±êµ¥Ôª } ·½·¨¶þ£º
#include
unsigned int x,y,z;
x=DBYTE[0X20]*256+DBYTE[0X21]; y=DBYTE[0X22]*256+DBYTE[0X23]; z=(x>y)?x:y; //½«Á½ÊýÖеĽϴóÕ߸³¸øz DBYTE[0X24]=z/256; DBYTE[0X25]=z%6; } ·½·¨Èý£º
#include
{
z=(x>y)?x:y; }
µÚ5Õ µ¥Æ¬»úµÄÖжÏϵͳ ϰÌâ
1£®Ê²Ã´ÊÇÖжϡ¢ÖжÏÔ´¡¢ÖжÏÓÅÏȼ¶ºÍÖжÏǶÌ×£¿
´ð£ºÖжÏÊÇÖ¸µ¥Æ¬»úÄÚ²¿ÓÐÒ»¸öÖжϹÜÀíϵͳ£¬Ëü¶ÔÄÚ²¿µÄ¶¨Ê±Æ÷ʼþ¡¢´®ÐÐͨÐŵķ¢ËͺͽÓÊÕ¼°Íⲿʼþ£¨Èç¼üÅ̰´¼ü¶¯×÷£©µÈ½øÐÐ×Ô¶¯µÄ¼ì²âÅжϡ£µ±CPUÕýÔÚ´¦Àíij¼þÊÂÇ飨ÀýÈçÕýÔÚÖ´ÐÐÖ÷³ÌÐò£©µÄʱºò£¬Íⲿ»òÄÚ²¿·¢ÉúµÄijһʼþ£¨Èçij¸öÒý½ÅÉÏµçÆ½µÄ±ä»¯£¬Ò»¸öÂö³åÑØµÄ·¢Éú»ò¼ÆÊýÆ÷µÄ¼ÆÊýÒç³öµÈ£©ÇëÇóCPUѸËÙ´¦Àí£¬ÓÚÊÇ£¬ÖжϹÜÀíϵͳ»áÖÃλÏàÓ¦±ê־֪ͨCPUÔÝʱÖÐÖ¹µ±Ç°µÄ¹¤×÷£¬Ñ¸ËÙתȥ´¦ÀíËù·¢ÉúµÄʼþ¡£´¦ÀíÍê¸Ãʼþºó£¬Ôٻص½ÔÀ´±»ÖÐÖ¹µÄµØ·½£¬¼ÌÐøÔÀ´µÄ¹¤×÷£¬ÕâÑùµÄ¹ý³Ì³ÆÎªÖжϡ£
Òý·¢ÖжϵÄʼþ³ÆÎªÖжÏÔ´¡£
½«ÖжÏʼþ°´ÇáÖØ»º¼±·ÖÈô¸É¼¶±ð½ÐÖжÏÓÅÏȼ¶¡£
ÔÊÐíÖжÏÓÅÏȼ¶¸ßµÄÖжÏÔ´ÖжÏÕýÔÚÖ´ÐеĵÍÓÅÏȼ¶µÄÖжϷþÎñ³ÌÐò½ÐÖжÏǶÌס£
2£®Ê²Ã´½ÐÖжÏÔ´£¿MCS-51ÓÐÄÄЩÖжÏÔ´£¿¸÷ÓÐÊ²Ã´ÌØµã£¿ËüÃǵÄÖжÏÏòÁ¿µØÖ··Ö±ðÊǶàÉÙ£¿
´ð£ºÖжÏÔ´¼´Òý·¢ÖжϵÄʼþ¡£
MCS-51µ¥Æ¬»úÓÐ5¸öÖжÏÔ´£¬ËüÃÇÊÇÍⲿÖжÏ0£¬¶¨Ê±Æ÷T0£¬ÍⲿÖжÏ1£¬¶¨Ê±Æ÷T1£¬´®Ðпڡ£
ÍⲿÖжÏÔ´ÊÇÓÉÒý½ÅµÄ´¥·¢ÐźÅÒýÆðµÄÖжϣ¬¶¨Ê±Æ÷ÖжÏÔ´ÊÇÓÉÓÚ¶¨Ê±Æ÷¼ÆÊýÆ÷µÄÒç³öÒý·¢µÄÖжϣ¬´®ÐпÚÊÇÓÉÓÚ´®ÐÐͨÐŵķ¢ËÍ»ò½ÓÊÕÒý·¢µÄÖжϡ£
ÍⲿÖжÏ0£¬¶¨Ê±Æ÷T0£¬ÍⲿÖжÏ1£¬¶¨Ê±Æ÷T1£¬´®ÐпÚÎå¸öÖжÏÔ´µÄÖжÏÏòÁ¿µØÖ·ÒÀ´ÎΪ£º0003H£¬000BH£¬0013H£¬001BH£¬0023H¡£
3£®MCS-51ÖжϵÄÖжÏÏìÓ¦Ìõ¼þÊÇʲô£¿ ´ð£º(1) ÖжÏÔ´ÓÐÖжÏÇëÇó£»
(2) ´ËÖжÏÔ´ÔÊÐíλΪ1£¬¼´ÖжÏÔ´¿ÉÒÔÏòCPU·¢ÖжÏÇëÇó£» (3) CPU¿ª×ÜÖжÏ,¼´EA=1£» (4) ÎÞͬ¼¶»òÕ߸ü¸ß¼¶ÖжÏÕýÔÚ·þÎñ
4£®MCS-51µÄÖжÏÏìÓ¦¹ý³ÌÊÇÔõÑùµÄ£¿
´ð£º(1) ½«ÏàÓ¦µÄÖжÏÓÅÏȼ¶×´Ì¬´¥·¢Æ÷ÖÃ1£¬ÒÔ×è¶ÏºóÀ´µÄͬ¼¶ºÍµÍ¼¶ÖжÏÇëÇó£» (2) ÓÉÓ²¼þÇå³ýÏàÓ¦µÄÖжÏÇëÇó±êÖ¾£¬´®Ðпڵķ¢ËͺͽÓÊÕÖжϳýÍ⣻
(3) Ö´ÐÐÒ»ÌõÓ²¼þLCALLÖ¸Á¼´°Ñ³ÌÐò¼ÆÊýÆ÷PCµÄÄÚÈÝѹÈë¶ÑÕ»±£´æ£¬ÔÙ½«ÏàÓ¦µÄÖжϷþÎñ³ÌÐòµÄÈë¿ÚµØÖ·ËÍÈëPC£»
5£®±àд³öÍⲿÖжÏ1ΪÏÂÌøÑØ´¥·¢µÄÖжϳõʼ»¯³ÌÐò¡£ ½â£º
void Int1_init(){ IT1=1;
EA=1;EX1=1; //IE=0x84;// IE|=0x84; }
6£®ÓÐÒ»ÍⲿÖжÏÔ´£¬½ÓÈëINT0¶Ë£¬µ±ÆäÖÐÓÐÖжÏÇëÇóʱ£¬ÒªÇóCPU°ÑÒ»¸ö´ÓÄÚ²¿RAM 30Hµ¥Ôª¿ªÊ¼µÄ50¸ö×Ö½ÚµÄÊý¾Ý¿é´«Ë͵½ÍⲿRAM´Ó1000H¿ªÊ¼µÄÁ¬Ðø´æ´¢Çø¡£Çë±àд¶ÔÓ¦µÄ³ÌÐò¡£
½â£º
#include
void intx0() interrupt 0 using 1{ char * ptr1=0x30;
char xdata * ptr2=0x1000; for(i=0;i<50;i++) *ptr2++=*ptr1++; }
7£®Éèfosc = 12MHz£¬ÀûÓö¨Ê±Æ÷£¬TO(¹¤×÷ÔÚ·½Ê½2)ÔÚP1.1Òý½ÅÉÏ»ñÈ¡Êä³öÖÜÆÚΪO.4msµÄ·½²¨Ðźţ¬¶¨Ê±Æ÷Òç³öʱ²ÉÓÃÖжϷ½Ê½´¦Àí£¬Çë±àд£¬T0µÄ³õʼ»¯³ÌÐò¼°ÖжϷþÎñ³ÌÐò¡£
½â£ºfosc = 12MHz£¬Ôò»úÆ÷ÖÜÆÚ=1us£»µ±T0¹¤×÷ÔÚ·½Ê½2ʱ£¬Æä×î´ó¶¨Ê±Ê±¼äΪ256us£¬ÒªÊä³öÖÜÆÚΪ0.4mS¼´400usµÄ·½²¨Ðźţ¬ÔòÆä¸ß¡¢µÍµçƽӦ¸÷Ϊ200us£¬ÏÔÈ»µ±¶¨Ê±Æ÷T0°´·½Ê½2¹¤×÷ʱ£¬Ö»Ðè¼ÆÊý´ïµ½200´Î¼´¿É£¬Òò´ËÆäʱ¼ä³£Êý³õֵΪ256-200=56¡£ÔÚT0µÄÖжϷþÎñ³ÌÐòÖУ¬Ö»Ð轫P1.1Òý½ÅÇó·´¼´¿É¡£
#include
void timer0()interrupt 1 using 1{ P1_1=!P1_1; }
void main(){ P1_1=0; TMOD=0x02; TH0=56; TL0=56; IE=0x82; TR0=1; for(;;){}
}
8£®Éèfosc = 6MHz£¬ÒªÇóÿ¸ô50ms£¬´ÓÄÚ²¿RAMÒÔ30H¿ªÊ¼µÄÊý¾Ý´æ´¢Çø´«ËÍÒ»¸ö×Ö½ÚÊý¾Ýµ½ÍⲿRAMÒÔ2000H¿ªÊ¼µÄÁ¬Ðø´æ´¢Çø£¬¹²´«ËÍ50¸öÊý¾Ý¡£ÒªÇ󣺲ÉÓö¨Ê±Æ÷T1ÒÔ·½Ê½2ʵÏÖ¶¨Ê±£¬Êý¾Ý´«ËÍÔÚÖжϷþÎñ³ÌÐòÖÐÍê³É¡£
½â£ºfosc = 6MHz£¬»úÆ÷ÖÜÆÚ=12/6*10-6S=2us,T1¹¤×÷ÔÚ·½Ê½2ʱ£¬×î´ó¶¨Ê±Ê±¼äΪ512us£¬Òª¶¨Ê±50ms,¿ÉÒÔ¼ÆÊý100´Î£¬Ã¿´Î¶¨Ê±500usÀ´ÊµÏÖ£¬·½Ê½2¶¨Ê±500usÐè¼ÆÊý250´Î£¬¹ÊÆäʱ¼ä³£ÊýΪ256-250=6¡£
#include
char xdata *ptr2=0x2000; void timer1()interrupt 3 using 1{ intcnt++; if(intcnt==100){ if(mocnt<50){ *ptr2++=*ptr1++; movcnt++; }
else EX1=0; intcnt=0; }
}
void main(){ TMOD=0x20; TH1=6; TL1=6; IE=0x84; TR1=1; for(;;){} }
9£®805lµ¥Æ¬»úÖ»ÓÐÁ½¸öÍⲿÖжÏÔ´£¬ÈôÒªÀ©Õ¹³É8¸öÍⲿÖжÏÔ´£¬Ç뻳öʵÏÖÕâÖÖÀ©Õ¹µÄÓ²¼þÏß·ͼ£¬²¢ËµÃ÷ÈçºÎÈ·¶¨¸÷ÖжÏÔ´µÄÓÅÏȼ¶¡£
½â£ºÓð´Å¥¿ª¹ØÄ£ÄâÖжÏÔ´µÄÖжÏÇëÇó£¬INT0µ¥¶À×÷Ϊһ¸öÖжÏÔ´£¬INT1À©Õ¹³É7¸öÖжÏÔ´£¬ÓÐÖжÏÇëÇóʱ£¬½èÖúÓÚP2¿Úʶ±ðÊÇÕâÆß¸öÖжÏÔ´ÊÇÄĸöÇëÇóÖжϣ¬ÎªÁËÑéÖ¤ÕýÈ·ÐÔ£¬Èç¹ûÊÇINT0
Öжϣ¬ÔòÔÚP0¿ÚµÄÊýÂë¹ÜÉÏÏÔʾ0£¬ÊÇINT1Öжϣ¬Ôò¸ù¾Ý´ÓÉϵ½ÏÂÊÇÄĸöÖжÏÔ´ÔÚP0¿ÚµÄÊýÂë¹ÜÉÏÏÔʾ1¡ª7¡£¾ßÌåµç·ºÍ³ÌÐòÈçÏ£º
#include
char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}; void INT0_srv (void) interrupt 0 using 1 //ÍⲿÖжÏ0´¦Àí³ÌÐò { P0=led_mod[0]; }
void INT1_srv (void) interrupt 2 using 2 //ÍⲿÖжÏ1´¦Àí³ÌÐò { char intnum; intnum=P2; switch(intnum){
case 0xfe:P0=led_mod[1];break; case 0xfd:P0=led_mod[2];break; case 0xfb:P0=led_mod[3];break; case 0xf7:P0=led_mod[4];break; case 0xef:P0=led_mod[5];break; case 0xdf:P0=led_mod[6];break; case 0xbf:P0=led_mod[7]; } }
void main(){ EA=1;
EX0=1; EX1=1; P0=0; while(1); }
µÚ6Õ µ¥Æ¬»úµÄ¶¨Ê±Æ÷/¼ÆÊýÆ÷ ϰÌâ
1£®MCS-51ϵÁеÄ8051µ¥Æ¬»úÄÚÓм¸¸ö¶¨Ê±/¼ÆÊýÆ÷£¿Ã¿¸ö¶¨Ê±/¼ÆÊýÆ÷Óм¸ÖÖ¹¤×÷·½Ê½£¿ÈçºÎÑ¡Ôñ£¿
´ð£ºMCS-51ϵÁеÄ8051µ¥Æ¬»úÄÚÓÐ2¸ö¶¨Ê±/¼ÆÊýÆ÷£¬¼´T0ºÍT1£¬Ã¿¸ö¶¼¿ÉÒÔ±à³ÌΪ¶¨Ê±Æ÷»ò¼ÆÊýÆ÷£¬T0ÓÐËÄÖÖ¹¤×÷·½Ê½(·½Ê½0¡ª13λ¡¢·½Ê½1¡ª16λ¡¢·½Ê½2-¿É×Ô¶¯×°Èë³õÖµµÄ8λ¡¢·½Ê½3-Á½¸ö8λ)£¬T1ÓÐÈýÖÖ¹¤×÷·½Ê½(ÓëT0ÏàͬµÄǰÈýÖÖ)£¬Í¨¹ý¶ÔTMODµÄÉèÖÃÑ¡Ôñ£¬Æä¸ßËÄλѡÔñT1£¬µÍËÄλѡÔñT0¡£
2£®Èç¹û²ÉÓõľ§ÕñƵÂÊΪ3MHz£¬¶¨Ê±/¼ÆÊýÆ÷TO·Ö±ð¹¤×÷ÔÚ·½Ê½0¡¢1ºÍ2Ï£¬Æä×î´óµÄ¶¨Ê±Ê±¼ä¸÷Ϊ¶àÉÙ£¿
´ð£ºÈç¹û²ÉÓõľ§ÕñƵÂÊΪ3MHz£¬»úÆ÷ÖÜÆÚΪ12¡Á1/(3*106)=4us£¬ÓÉÓÚ¶¨Ê±/¼ÆÊýÆ÷TO¹¤×÷ÔÚ·½Ê½0¡¢1ºÍ2ʱ£¬Æä×î´óµÄ¼ÆÊý´ÎÊýΪ8192¡¢65536ºÍ256ËùÒÔ£¬Æä×î´ó¶¨Ê±Ê±¼ä·Ö±ðÊÇ£º·½Ê½0Ϊ8192¡Á4us£½32.768ms¡¢·½Ê½1Ϊ65536¡Á4us£½262.144ms¡¢·½Ê½2Ϊ256¡Á4us£½1024us¡£
3£®¶¨Ê±/¼ÆÊýÆ÷TO×÷Ϊ¼ÆÊýÆ÷ʹÓÃʱ£¬Æä¼ÆÊýƵÂʲ»Äܳ¬¹ý¾§ÕñƵÂʵĶàÉÙ£¿ ´ð£ºÓÉÓÚ¶¨Ê±/¼ÆÊýÆ÷TO×÷Ϊ¼ÆÊýÆ÷ʹÓÃʱ£¬ÊǶÔÍⲿÒý½ÅÊäÈëµÄÂö³å½øÐмÆÊý£¬ CPUÔÚÿ¸ö»úÆ÷ÖÜÆÚ²ÉÑùÒ»´ÎÒý½Å£¬µ±Ç°Ò»´Î²ÉÑùΪ¸ßµçƽ£¬ºóÒ»´Î²ÉÑùΪµÍµçƽ£¬ÔòΪһ´ÎÓÐЧ¼ÆÊýÂö³å£¬ËùÒÔÈç¹û¾§ÕñƵÂÊΪfosc£¬ÔòÆä²ÉÑùƵÂÊfosc/12£¬Á½´Î²ÉÑù²ÅÄܾö¶¨Ò»´Î¼ÆÊýÓÐЧ£¬ËùÒÔ¼ÆÊýƵÂʲ»Äܳ¬¹ýfosc/24¡£
4£®¼òµ¥ËµÃ÷¶¨Ê±/¼ÆÊýÆ÷ÔÚ²»Í¬¹¤×÷ģʽϵÄÌØµã¡£
´ð£º·½Ê½0Ϊ13λµÄ¶¨Ê±/¼ÆÊýÆ÷£¬ÓÉTHxµÄ8λºÍTLxµÄµÍ5λ¹¹³É¡¢·½Ê½1Ϊ16λµÄ¶¨Ê±/¼ÆÊýÆ÷,ÓÉTHxµÄ8λºÍTLxµÄ8λ¹¹³É£¬·½Ê½2Ϊ8λµÄ¶¨Ê±/¼ÆÊýÆ÷£¬TLxΪ¼Ó1¼ÆÊýÆ÷£¬THxΪ¼ÆÊý³õÖµ¼Ä´æÆ÷¡£·½Ê½3Ö»ÄÜÓÃÓÚT0£¬Êǽ«T0µÄµÍ8λÓÃ×÷Ò»¸ö¶ÀÁ¢µÄ¶¨Ê±/¼ÆÊýÆ÷£¬¶ø¸ß8λµÄTH0ÓÃ×÷Ò»¸ö¶ÀÁ¢µÄ¶¨Ê±Æ÷£¬²¢½èÓÃT1µÄTR1ºÍTF1×÷Ϊ¸ß8λ¶¨Ê±Æ÷µÄÆôÍ£¿ØÖÆÎ»ºÍÒç³ö±ê־λ¡£
5£®¶¨Ê±Æ÷¹¤×÷ÔÚ·½Ê½2ʱÓкÎÌØµã£¿ÊÊÓÃÓÚʲôӦÓó¡ºÏ£¿
´ð£º¶¨Ê±Æ÷¹¤×÷ÔÚ·½Ê½2ʱÊÇÒ»¸ö¿É×Ô¶¯×°Èëʱ¼ä³£Êý³õÖµµÄ8λ¶¨Ê±/¼ÆÊýÆ÷£¬TLxΪ¼Ó1¼ÆÊýÆ÷£¬THxΪ¼ÆÊý³õÖµ¼Ä´æÆ÷¡£ÓÉÓÚÆä»Ö¸´³õÖµÓÉÓ²¼þ×Ô¶¯Íê³É£¬ËùÒÔµ±ÐèÒª·´¸´¼ÆÊýʱ£¬Ó÷½Ê½2¿ÉÒÔ·½±ãµØÊµÏÖ¾«È·µÄ¶¨Ê±¡£
6£®Ò»¸ö¶¨Ê±Æ÷µÄ¶¨Ê±Ê±¼äÓÐÏÞ£¬ÈçºÎ²ÉÓÃÁ½¸ö¶¨Ê±Æ÷µÄ´®Ðж¨Ê±À´ÊµÏֽϳ¤Ê±¼äµÄ¶¨Ê±£¿ ´ð£ºÒ»¸ö¶¨Ê±Æ÷µÄ¶¨Ê±Ê±¼äÓÐÏÞ£¬¿É²ÉÓÃÁ½¸ö¶¨Ê±Æ÷µÄ´®Ðж¨Ê±À´ÊµÏֽϳ¤Ê±¼äµÄ¶¨Ê±£¬±ÈÈ磬µ±fosc£½12MHzʱ£¬µ¥¸ö¶¨Ê±/¼ÆÊýÆ÷²ÉÓ÷½Ê½1µÄ×î´ó¶¨Ê±Ê±¼äΪ65.536ms£¬´ËʱÈôÓÃÁíÒ»¸ö¶¨Ê±/¼ÆÊýÆ÷°´·½Ê½1½øÐÐÒç³ö´ÎÊý¼ÆÊý£¬ÔÚ¶¨Ê±Æ÷Òç³öÖжÏʱ£¬¸ø¼ÆÊýÆ÷·¢Ò»¸ö¼ÆÊýÂö³å£¬ÇÒÁ½Õß¾ùΪ·½Ê½Ò»£¬ÔòÁ½Õß´®ÐпɴﵽµÄ¶¨Ê±Ê±¼äΪ65536¡Á65.536ms=4294967.296ms¡£
7£®ÉèMCS-51µ¥Æ¬»úµÄ¾§ÕñƵÂÊΪ12MHz£¬Çë±à³ÌʹP1.O¶ËÊä³öƵÂÊΪ20kHzµÄ·½²¨¡£ ½â£ºfosc = 12MHz£¬ËùÒÔ»úÆ÷ÖÜÆÚΪ1us¡£20kHzµÄ·½²¨ÖÜÆÚΪ1/(20¡Á1000)=50us£¬·½²¨¼´¸ßµçƽºÍµÍµçƽºÍʱ¼äÏàµÈ£¬ËùÒÔÖ»ÐèÉèÒ»¸ö¶¨Ê±Æ÷¶¨Ê±25us½«P1.OÇó·´Ò»´Î¼´¿É¡£ÓÉÓÚÌâĿûÓй涨£¬ËùÒÔ¿ÉÒÔÓòéѯ·½Ê½£¬Ò²¿ÉÒÔÓÃÖжϷ½Ê½½øÐбà³ÌʵÏÖ¡£
·½·¨Ò»£º²ÉÓòéѯ·½Ê½ÊµÏÖ #include
sbit P1_0=P1^0;//¶¨ÒåÊä³öÒý½Å±äÁ¿ void main(){
P1_0=0; //Êä³ö³õֵΪ0 TMOD=0x02; //T0·½Ê½2¶¨Ê±
TH0=256-25; //¼Æ25´Î£¬¼ÆÊý³õֵΪģ256¼õ25 TL0=TH0; TR0=1; //Æô¶¯T0 while(1) //ÎÞÏÞÑ»· if(TF0){ //²éѯT0Òç³ö±êÖ¾ TF0=0; //Òç³ö±êÖ¾¸´Î» P1_0=!P1_0; //Êä³öÇó·´ } }
·½·¨¶þ£º²ÉÓÃÖжϷ½Ê½ÊµÏÖ #include
sbit P1_0=P1^0; //¶¨ÒåÊä³öÒý½Å±äÁ¿ void main(){
P1_0=0; //Êä³ö³õֵΪ0 TMOD=0x02; //T0·½Ê½2¶¨Ê±
TH0=256-25; //¼Æ25´Î£¬¼ÆÊý³õֵΪģ256¼õ25 TL0=TH0;
IE=0x82; //ÔÊÐíCPUÏìÓ¦Öжϣ¬ÔÊÐíT0·¢ÖжÏÇëÇó TR0=1; //Æô¶¯T0
for(;;){} //ÎÞÏÞÑ»·µÈ´ýÖÐ¶Ï }
timer0()interrupt 1 using 1{ P1_0=!P1_0; //Êä³öÇó·´
}
8£®²ÉÓö¨Ê±/¼ÆÊýÆ÷TO¶ÔÍⲿÂö³å½øÐмÆÊý£¬Ã¿¼ÆÊý10O¸öÂö³å£¬TOÇл»Îª¶¨Ê±¹¤×÷·½Ê½¡£¶¨Ê±1msºó£¬ÓÖתΪ¼ÆÊý·½Ê½£¬Èç´ËÑ»·²»Ö¹¡£¼Ù¶¨MCS-5lµ¥Æ¬»úµÄ¾§ÌåÕñµ´Æ÷µÄƵÂÊΪ6MHz£¬ÒªÇóT0¹¤×÷ÔÚ·½Ê½1״̬£¬Çë±àд³öÏàÓ¦³ÌÐò¡£
6½â£º¾§ÌåÕñµ´Æ÷µÄƵÂÊΪ6MHz,Ôò»úÆ÷ÖÜÆÚΪ12¡Á1/(6*10)= 2us, Òª¶¨Ê±1ms£¬ Ðè¼ÆÊý´ÎÊýΪ1000/2=500´Î #include
TMOD=0x05;//T0¼ÆÊý£¬·½Ê½Ò»
TH0=(65536-100)/256;//¼ÆÊý100´Î TL0=(65536-100)%6; TR0=1;
while(!TF0);//µÈ´ý¼ÆÊý100´ÎµÄÒç³ö TF0=0; //Òç³ö±êÖ¾¸´Î»
TMOD=0x01;//T0¶¨Ê±£¬·½Ê½Ò»
TH0=(65536-500)/256;//¼ÆÊý100´Î TL0=(65536-500)%6; TR0=1; //Æô¶¯T0
while(!TF0); //µÈ´ý¶¨Ê±Ê±¼äµ½1msµÄÒç³ö TF0=0; //Òç³ö±êÖ¾¸´Î»
} }
9£®É赥Ƭ»úµÄfosc = 12MHz£¬Ê¹P1.OºÍP1.1·Ö±ðÊä³öÖÜÆÚΪ1msºÍlOmsµÄ·½²¨£¬ÇëÓö¨Ê±Æ÷TO·½Ê½2±à³ÌʵÏÖ¡£
½â£ºfosc = 12MHz£¬ËùÒÔ»úÆ÷ÖÜÆÚΪ1us¡£
ҪʹP1.0Êä³öÖÜÆÚΪ1000usµÄ·½²¨£¬¿ÉÒÔͨ¹ý¶¨Ê±ÖжϷ½Ê½ÊµÏÖ£¬¶¨Ê±Ê±¼äΪ250us£¬¶¨Ê±¼ÆÊý2´ÎÀ´ÊµÏÖ£¬¶ÔP1.0Çó·´¼´¿É¡£
ҪʹP1.1Êä³öÖÜÆÚΪ10msµÄ·½²¨£¬Ò²¿ÉÒÔͨ¹ý¶¨Ê±ÖжϷ½Ê½ÊµÏÖ£¬¶¨Ê±Ê±¼äΪ5ms£¬µ±Ê±¼äµ½Ê±£¬¶ÔP1.1Çó·´¼´¿É¡£ÓÉÓÚ5ms/250us=20£¬ËùÒÔÒ²¿ÉÒÔͨ¹ý¶Ô250usµÄ¶¨Ê±¼ÆÊý20´ÎÀ´ÊµÏÖ¡£³ÌÐòÈçÏ£º
#include
sbit P1_0=P1^0;//Êä³öÖÜÆÚΪ400usµÄ·½²¨µÄÒý½Å sbit P1_1=P1^1; //Êä³öÖÜÆÚΪ10msµÄ·½²¨µÄÒý½Å
unsigned char num1=0,num2=0;//ÖжϴÎÊý¼ÆÊýÆ÷£¬³õֵΪ0 void main(){
P1_0=0; //Êä³ö³õֵΪ0 P1_1=0; //Êä³ö³õֵΪ0 TMOD=0x02; //T0·½Ê½2¶¨Ê±
TH0=256-250;//¼Æ200´Î£¬¼ÆÊý³õֵΪģ256¼õ200 TL0=TH0;
IE=0x82; //ÔÊÐíCPUÏìÓ¦Öжϣ¬ÔÊÐíT0·¢ÖжÏÇëÇó TR0=1; //Æô¶¯T0
for(;;){} //ÎÞÏÞÑ»·µÈ´ýÖжÏ
}
void timer0()interrupt 1 using 1{ num1++;num2++; //ÖжϴÎÊý¼Ó1 if(num1==2) // ÖжϴÎÊý´ïµ½2´Î { P1_0=!P1_0; //Êä³öP1_0Çó·´ num1=0; //ÖжϴÎÊý¸´Î»Îª0 }
if(num2==20){ // ÖжϴÎÊý´ïµ½20´Î num2=0; //ÖжϴÎÊý¸´Î»Îª0 P1_1=!P1_1; //Êä³öP1_1Çó·´ } }
10£®±àд³ÌÐò£¬ÒªÇóʹÓÃTO£¬²ÉÓ÷½Ê½2¶¨Ê±£¬ÔÚP1.0Êä³öÖÜÆÚΪ400usÕ¼¿Õ±ÈΪ10:1µÄ¾ØÐÎÂö³å¡£
½â£ºÉèfosc = 12MHz£¬Ôò»úÆ÷ÖÜÆÚΪ1us¡£ÉèP1.0³õֵΪ0¡£
ÖÜÆÚΪ400us£¬¿É¶¨Ò巽ʽ2¶¨Ê±£¬¼ÆÊý³õֵΪ256-40£¬Ò»¸öÖÜÆÚÖжÏ10´ÎΪ400us£¬ÔÚÖжϼÆÊýΪ1ºÍ2(»òÈÎÒâÁ½´Î¼ÆÊýÖ®¼ä)ʱ£¬¶ÔP1.0Çó·´¼´¿É¡£ #include
sbit P1_0=P1^0; //Êä³öÖÜÆÚÒý½Å
unsigned char cnt=0; //ÖжϴÎÊý¼ÆÊýÆ÷£¬³õֵΪ0 void main(){
P1_0=0; //Êä³ö³õֵΪ0 TMOD=0x02; //T0·½Ê½2¶¨Ê±
TH0=256-40; //¼Æ40´Î£¬¼ÆÊý³õֵΪģ256¼õ40
TL0=TH0;
IE=0x82; //ÔÊÐíCPUÏìÓ¦Öжϣ¬ÔÊÐíT0·¢ÖжÏÇëÇó TR0=1; //Æô¶¯T0
for(;;){} //ÎÞÏÞÑ»·µÈ´ýÖÐ¶Ï }
void timer0()interrupt 1 using 1{ cnt++;//ÖжϴÎÊý¼Ó1
if(cnt==1||cnt==2) P1_0=!P1_0; //ÖжϴÎÊýΪ1»ò2ʱ¶ÔÊä³öÒý½ÅÇó·´ if(cnt==10)cnt=0; //ÖжϴÎÊý´ïµ½10ʱ¸´Î»Îª0
} µÚÆßÕÂ
7.1. ʲôÊ´®ÐÐÒ첽ͨÐÅ£¿ÔÚ´®ÐÐÒ첽ͨÐÅÖУ¬Êý¾ÝÖ¡µÄ´«Êä¸ñʽÊÇʲô£¿º¬ÒåÈçºÎ£¿ ´ð£º´®ÐÐÒ첽ͨÐÅÊÇÖ¸ÔÚ´®ÐÐͨÐÅÖз¢ËͶ˺ͽÓÊÕ¶Ë¿ÉÒÔÓɸ÷×ÔµÄʱÖÓÀ´¿ØÖÆÊý¾ÝµÄ·¢ËͺͽÓÊÕ£¬ÕâÁ½¸öʱÖÓÔ´±Ë´Ë¶ÀÁ¢£¬»¥²»Í¬²½¡£
Êý¾ÝÖ¡µÄ´«Êä¸ñʽ£ºÆðʼ룬Êý¾Ýλ£¬ÆæÅ¼Ð£ÑéλºÍֹͣλ
º¬Ò壺ÆðʼλÓÃÓÚʵÏÖ·¢ËͺͽÓÊÕË«·½É豸֮¼äµÄͬ²½£»Êý¾Ýλ°üº¬ËùÒª´«ÊäµÄÐÅÏ¢£»ÆæÅ¼Ð£ÑéλÓÃÓÚÅжϽÓÊÕÊý¾ÝµÄÕýÈ·ÐÔ£»Í£Ö¹Î»±íʾһ֡Êý¾Ý·¢ËͽáÊø£¬¿ªÊ¼ÏÂÒ»Ö¡Êý¾ÝµÄ´«Êä¡£
7.3. 89C51µ¥Æ¬»ú´®ÐÐͨÐŽӿڿØÖƼĴæÆ÷Óм¸¸ö£¿Ã¿¸ö¼Ä´æÆ÷µÄº¬ÒåÊÇʲô£¿ ´ð£º ÓеçÔ´¿ØÖƼĴæÆ÷PCONºÍ´®ÐпڿØÖƼĴæÆ÷SCON PCONÖÐSMODÓë´®¿ÚͨÐÅÓйء£
SMOD=0; ´®¿Ú·½Ê½1£¬2£¬3ʱ£¬²¨ÌØÂÊÕý³£¡£ SMOD=1; ´®¿Ú·½Ê½1£¬2£¬3ʱ£¬²¨ÌØÂʼӱ¶ ÆäÓàÓë´®ÐÐͨÐÅÎÞ¹Ø SCONÖÐ
SM0¡¢SM1£º´®Ðпڹ¤×÷·½Ê½¿ØÖÆÎ» SM2£º¶à»úͨÐÅ¿ØÖÆÎ»
REN£º´®ÐпڽÓÊÕʹÄÜ¿ØÖƶˣ»REN=1ʱ£¬ÔÊÐí½ÓÊÕ£¬REN=0ʱ£¬½ûÖ¹½ÓÊÕ TB8£º·¢ËͽÓÊÕÊý¾Ýλ8
RB8£º½ÓÊÕÊý¾Ýλ8
TI£º·¢ËÍÖжϱê־λ£»TI=1±íʾ֡·¢ËͽáÊø£¬TI¿ÉÓÉÈí¼þÖÃ0 RI£º½ÓÊÕÖжϱê־λ£»RI=1±íʾ֡½ÓÊÕÍê³É£¬RI¿ÉÓÉÈí¼þÖÃ0
7.4. ÔÚ·½Ê½1ºÍ·½Ê½3µÄͨÐÅģʽÏ£¬²¨ÌØÂÊͨ¹ýÄǸö¶¨Ê±Æ÷Çý¶¯²úÉú£¿²ÉÓúÎÖÖ¶¨Ê±·½Ê½£¿Èç¹ûÒªÇó²ÉÓþ§ÕñΪ11.0592MHz£¬²úÉúµÄ´«ËͲ¨ÌØÂÊΪ2400b/s£¬Ó¦¸ÃÔõÑù¶Ô¶¨Ê±Æ÷³õʼ»¯²Ù×÷£¿
´ð£ºÓɶ¨Ê±Æ÷1Çý¶¯²úÉú£¬²ÉÓö¨Ê±Æ÷1µÄ¹¤×÷·½Ê½2£¬×Ô¶¯´Ó×°³õÖµ µ±¾§ÕñΪ11.0592MHz£¬²¨ÌØÂÊΪ2400b/s,Óɲ¨ÌØÂʹ«Ê½£º
²¨ÌØÂÊ=(2SMOD/32)?fOSC/(12?(256? a))a?256?11.0592?106/(384?2400) ¿ÉÇóµÃ³õÖµaΪF4H ³õʼ»¯²Ù×÷£º TMOD=0x20; TL1=0xF4; TH1=0xF4; PCON=0x00; SCON=0x00; TR1=1;
8.3 ÔÚÓɵ¥Æ¬»ú80C51ºÍһƬADC0809×é³ÉµÄÊý¾Ý²É¼¯ÏµÍ³ÖУ¬¼ÙÉèADC0809µÄµØÖ·Îª0x7ff8~0x7fff£¬»³ö½Ó¿Úµç·ͼ£¬²¢±àдÿ¸ô1msÂÖÁ÷²É¼¯Ò»´Î8¸öͨµÀÊý¾ÝµÄ³ÌÐò¡£²ÉÑù100´Îȡƽ¾ùÖµ¡£
´ð£ºµç·ͼÊéÉÏʵÀýÓУ¬×öÁËÈçÏ¸Ķ¯
1.¿ØÖƶËADDA£¬ADDB£¬ADDC·Ö±ð½ÓP2^0£¬P2^!,P2^2. 2.ɾȥÁËÒëÂëÆ÷ÓëÂß¼Æ÷¼þÆ÷¼þ£¬74LS373,74HC14,74HC02£¬ 3.Öжϼì²â¶ËEOC½ÓP3^2¡£ ²Î¿¼³ÌÐòÈçÏ£¬×Ô¼ºÐ´µÄû¾¹ý·ÂÕæ£¬ #include
#define uchar unsigned char//ºê¶¨Òå #define uint unsigned int
#define AD_0 XBYTE[0xff8]//¶¨ÒåͨµÀ·ÃÎʵØÖ· #define AD_1 XBYTE[0xff9] #define AD_2 XBYTE[0xffa] #define AD_3 XBYTE[0xffb] #define AD_4 XBYTE[0xffc] #define AD_5 XBYTE[0xffd] #define AD_6 XBYTE[0xffe] #define AD_7 XBYTE[0xfff] sbit busy=P3^2;//¶¨ÒåÖжÏÇëÇó¶Ë uchar count=0;//¶¨Òå²ÉÑù´ÎÊý
uchar datcode[100]={0};//¶¨ÒåÊý¾Ý´æ·ÅÊý×é int dat=0,dat1=0;//¶¨ÒåÁÙʱÊý¾ÝÓë×îÖÕÆ½¾ùÊý¾Ý uchar i,j,num;//¶¨Òå±äÁ¿ void main()
{
TMOD=0x01;//¶¨Ê±Æ÷0 ¹¤×÷·½Ê½1 TL0=(65536-1000)/256;//1msÖжÏÒ»´Î TH0=(65536-1000)%6;
EA=1;//¿ª×ÜÖжϣ¬¶¨Ê±Æ÷Öжϣ¬´ò¿ª¶¨Ê±Æ÷0 ET0=1; TR0=1;
while(count<100)//100´ÎÊý¾ÝÇóºÍº¯Êý {
dat1=dat1+datcode[i]; count++; }
dat=dat1/100; if(count>=100) count=0; }
void timer0() interrupt 1//ÖжϺ¯Êý {
TMOD=0x01;
TL0=(65536-1000)/256; TH0=(65536-1000)%6; AD_0=0;//Æô¶¯0ͨµÀADת»»