µ¥Æ¬»úÔ­ÀíÓëÓ¦ÓÃ-»ùÓÚ»ã±à¡¢C51¼°»ìºÏ±à³Ì1-11ÕÂϰÌâ½â´ð ÏÂÔØ±¾ÎÄ

}

5£­10 ÊÔÓÃC51ÓïÑÔ±àд³ÌÐòʵÏÖ½«Æ¬ÄÚRAM 30H¡¢31Hµ¥Ôª´æ·ÅµÄ2×Ö½ÚÊ®Áù½øÖÆÊýת»»ÎªÊ®½øÖÆÊý´æÓÚ21HΪÊ׵ĵ¥ÔªÖС££¨ÉèµÍµØÖ·´æ·Å¸ßλ×Ö½Ú£©

#include #include

#define uint unsigned int #define uchar unsigned char uchar digit_h _at_ 0x30; uchar digit_l _at_ 0x31; uchar *p; int buf; void H_D() {

buf= digit_h *256; buf=buf+ digit_l;

for(p=0x25;p>=0x21;P--) {

*p=buf; buf=buf/10; } }

5£­11ÊÔÓÃC51ÓïÑÔ±àд³ÌÐòʵÏÖ½«0£­9£¬A£­FÊ®Áù½øÖÆÊýת»»³ÉÏàÓ¦µÄASCIIÂë¡£

#include

void H_A(unsigned char X) {

if(X<=9) X=X+0x30; else

X=X+0x37; return X }

5£­12²Î¼ûͼ5£­3£¬Í¨¹ýµ¥Æ¬»úµÄ²¢ÐпÚP1£¬¿ØÖÆ8·LEDµÆÂÖÁ÷ÇÒÑ­»·µãÁÁ¡£Òý½ÅΪ0ʱµÆÁÁ£¬Îª1ʱµÆÏ¨Ãð¡£

#include

13

#incldue unsigned char i=0x7f; void main() {

while(1) {

P1=i; delay();

i=_cror_(i,1); } }

void delay() {

unsigned char l,m,n; for(l=0;l<254;l++) for(m=0;m<254;m++) for(n=0;n<254;n++); }

ϰÌâ6

6£­1 ÈçºÎÔÚC51³ÌÐòÖÐǶÈë»ã±à£¿

µÚÒ»²½£ºÍ¨¹ýÔ¤±àÒëÃüÁî¡°#pragma asm¡±ºÍ¡°#pragma endasm¡±ÔÚCÓïÑÔ´úÂëÖвåÈë»ã±àÓïÑÔ´úÂë¡£

µÚ¶þ²½£ºÔÚKeilC51»·¾³Ï£¬ÔÚProject´°¿ÚÖаüº¬»ã±à´úÂëµÄCÎļþÉϵ¥»÷ÓÒ¼ü£¬ÔÚµ¯³öµÄ¿ì½Ý²Ëµ¥ÖÐÑ¡Ôñ¡°Options for?¡±ÃüÁÔٴεã»÷Ñ¡ÖÐÓұߵġ°Generate Assembler SRC File¡±ºÍ¡°Assembler SRC file¡±¸´Ñ¡¿ò£¬Ê¹¼ì²é¿òÓÉ»ÒÉ«±ä³ÉºÚɫ״̬¡£

µÚÈý²½£º¸ù¾ÝÑ¡ÔñµÄ±àÒëģʽ£¬°ÑÏàÓ¦µÄ¿âÎļþ£¨ÈçSmallģʽʱ£¬ÊÇKeil\\C51\\Lib\\C51S.Lib£©¼ÓÈëµ½¹¤³ÌÖУ¬¸ÃÎļþ±ØÐë×÷Ϊ¹¤³ÌµÄ×îºóÎļþ¡£ ¿âÎļþÓë±àÒëģʽµÄ¹ØÏµÈçÏ£º C51S.LIB_ûÓи¡µãÔËËãµÄ Small ģʽ C51C.LIB_ûÓи¡µãÔËËãµÄ Compact ģʽ C51L.LIB_ûÓи¡µãÔËËãµÄ Large ģʽ C51FPS.LIB_´ø¸¡µãÔËËãµÄ Small ģʽ C51FPC.LIB_´ø¸¡µãÔËËãµÄ Compact ģʽ C51FPL.LIB_´ø¸¡µãÔËËãµÄ Large ģʽ

µÚËIJ½£º±àÒ룬Éú³ÉÄ¿±ê´úÂë¡£

6£­2 ¼òÊöÔÚC51Öе÷Óûã±à³ÌÐòµÄʵÏÖ·½·¨¡£

ÔÚC51Öе÷Óûã±à³ÌÐò£¬Òª°ÑÓÃCÓïÑÔ±àдµÄ³ÌÐò±£´æÎªÀ©Õ¹ÃûΪ.CµÄCÓïÑÔÎļþ£¬°ÑÓûã±àÓïÑÔ±àдµÄ³ÌÐò±£´æÎªÀ©Õ¹ÃûΪ.asm¡¢.SRC»òÕß.A51µÄ»ã±àÓïÑÔÎļþ£¬È»ºó°ÑÕâЩÎļþµ¼È뵽ͬһ¸ö¹¤³ÌϽøÐбàÒëÁ¬½Ó¡£

14

ÔÚCÓïÑÔÖе÷Óûã±à³ÌÐòʱ£¬¶Ô±»µ÷Óú¯Êý£¨»ã±àÓïÑÔº¯Êý£©ÒªÔÚÖ÷µ÷º¯Êý£¨CÓïÑÔº¯Êý£©ËùÔÚÎļþÖÐ×÷³öÉùÃ÷£¬²¢ÇÒ¶Ô»ã±àÓïÑÔ³ÌÐòÓÐÒ»ÏÂÒªÇó£º (1) ҪʹÓÃSEGMENTαָÁÒå¿ÉÔÙ¶¨Î»µÄCODE¶Î¡£ (2) Òª¸ù¾Ý²»Í¬µÄÇé¿ö¶Ôº¯ÊýÃû½øÐÐת»»£¬¼û±í6-1¡£

(3) ҪʹÓÃPUBLICαָÁ±»µ÷Óú¯Êý˵Ã÷ΪÍⲿ¿ÉÓú¯Êý¡£ (4) ÈôÓвÎÊý´«µÝ£¬°´ÕÕ±í6-3ËùÁеĹæÔòʹÓòÎÊý¡£ (5) ÈôÓзµ»ØÖµ£¬°´ÕÕ±í6-4ËùÁйæÔò´æÈë¼Ä´æÆ÷¡£

ϰÌâ7

7£­1 ʲôÊÇÖжϣ¿CPUΪʲôҪ²ÉÓÃÖжϽṹ£¿

ÖжÏÊÇÖ¸CPUÕýÔÚÖ´ÐÐij³ÌÐòʱ£¬Íⲿ»òÕßÄÚ²¿·¢ÉúÁËËæ»úµÄʼþ£¬ÇëÇóCPUѸËÙÈ¥´¦Àí£¬CPUÔÝʱֹͣÏÖÐеijÌÐòµÄÖ´ÐУ¬¶ø×Ô¶¯×ªÈ¥Ö´ÐÐÔ¤ÏȰ²ÅźõĴ¦Àí¸ÃʼþµÄ·þÎñ×Ó³ÌÐò¡£´¦ÀíÍê³Éºó·µ»Øµ½¶Ïµã´¦¼ÌÐøÖ´ÐС£

ÖжϽṹʹCPU¾ßÓÐËæ»úÓ¦±äµÄÄÜÁ¦,Ìá¸ßÁËCPUЧÂÊ,ÔöÇ¿ÁËʵʱÐÔ¡£

7£­2 STC12C5A60S2µ¥Æ¬»úÓÐÄöÖжÏÔ´£¿µ¥Æ¬»úÏìÓ¦¸÷ÖжϺó£¬Ó¦ÈçºÎÇå³ýÏàÓ¦Öжϱê־λ£¿ÆäÖжϷþÎñ³ÌÐòµÄÈë¿ÚµØÖ·¸÷ÊǶàÉÙ£¿

STC12C5A60S2µ¥Æ¬»úÓÐ10¸öÖжÏÔ´£ºÍⲿÖжÏ0£¨INT0£©¡¢¶¨Ê±/¼ÆÊýÆ÷T0¡¢ÍⲿÖжÏ1£¨INT1£©¡¢¶¨Ê±¼ÆÊýÆ÷T1¡¢´®ÐпÚ1£¨UART1£©¡¢A/Dת»»¡¢´®ÐпÚ2£¨UART2£©¡¢µÍѹ¼ì²â£¨LVD£©Öжϡ¢PCAÖжϺÍSPIÖжϡ£

µ¥Æ¬»úÏìÓ¦¸÷ÖжϺó,ÏàÓ¦Öжϱê־λµÄÇå³ý:

IE0¡¢IE1£ºÍⲿÖжÏ0¡¢ÍⲿÖжÏ1ÉèÖÃΪϽµÑØ´¥·¢·½Ê½Ê±£¬CPUÏìÓ¦¸ÃÖжÏ

ʱÓÉÓ²¼þ×Ô¶¯½«IE0¡¢IE1λÇå0£¬Èç¹ûÉèÖÃΪµÍµçƽ´¥·¢·½Ê½£¬±ØÐëÔÚ³ÌÐòÖÐͨ¹ýÖ¸ÁîÇå0¡£

TF0¡¢TF1ÖжÏÏìÓ¦ºóÓÉÄÚ²¿Ó²¼þµç·×Ô¶¯Çå0¡£ ÆäÓà¸÷Öжϱê־λ¶¼ÒªÍ¨¹ýÓû§³ÌÐòÇå0¡£ ÖжϷþÎñ³ÌÐòµÄÈë¿ÚµØÖ·£º

INT0£º0003H T0£º000BH INT1£º0013H T1£º001BH UART1£º0023H ADC:002BH LVD:0033H PCA:003BH UATR2:0043H SPI:004BH

7£­3 STC12C5A60S2µ¥Æ¬»úµÄÖжÏϵͳÖÐÓм¸¸öÓÅÏȼ¶£¿ÈçºÎÉ趨£¿µ±ÖжÏÓÅÏȼ¶Ïàͬʱ£¬Æä×ÔÈ»ÓÅÏÈȨ˳ÐòÊÇÔõÑùµÄ£¿

STC12C5A60S2µ¥Æ¬»úµÄÖжÏϵͳÖÐÓÐ4¸öÓÅÏȼ¶¡£

STCϵÁе¥Æ¬»úÖУ¬ÉèÖÃÌØÊ⹦ÄܼĴæÆ÷IP¡¢IP2¡¢IPH¡¢IP2H¿ÉÒÔʵÏÖ4¸öÖжÏÓÅÏȼ¶Ñ¡Ôñ¡£

µ±ÖжÏÓÅÏȼ¶Ïàͬʱ£¬Èç¹ûÆäÖеöÖжÏԴͬʱ²úÉúÖжÏÇëÇó£¬ÖжÏÔ´ÏìÓ¦ÖжϵĴÎÐòÈ¡¾öÓÚÄÚ²¿µÄ²éѯ´ÎÐò¡£¸÷ÖжÏÔ´ÖжÏÓÅÏȲéѯ´ÎÐòÓɸߵ½µÍÒÀ´ÎÊÇ£ºINT0¡¢T0¡¢INT1¡¢T1¡¢UART1¡¢ADC¡¢LVD¡¢PCA¡¢UATR2¡¢SPI

15

7£­4 ¼òÊöSTC12C5A60S2µ¥Æ¬»úµÄÖжÏǶÌ×Ô­Ôò¡£

1. ÔÚÔËÐеÍÓÅÏȼ¶ÖжÏÔ´µÄÖжϷþÎñ³ÌÐòÖУ¬Äܱ»¸ßÓÅÏȼ¶µÄÖжÏÔ´Öжϣ¬·´Ö®²»ÄÜ¡£

2. ÈκÎÖжϣ¬Ò»µ©µÃµ½CPUÏìÓ¦£¬¾Í²»»á±»Í¬Ò»ÖжÏÓÅÏȼ¶±ðµÄÖжÏÔ´Öжϡ£

7£­5 ÖжÏÏìÓ¦¹ý³ÌÖУ¬ÎªÊ²Ã´Òª±£»¤ÏÖ³¡£¿ÈçºÎ±£»¤£¿

ÒòΪÖжϷþÎñ³ÌÐò»áÓõ½Ò»Ð©¼Ä´æÆ÷ºÍ´æ´¢Æ÷£¬Èç¹û²»±£»¤ÏÖ³¡£¬ÕâЩ¼Ä´æÆ÷ºÍ´æ´¢Æ÷ÖеÄÊý¾Ý¾Í»á¸²¸Ç£¬µ±ÖжϷµ»Ø¼ÌÐøÔËÐÐÔ­À´µÄ³ÌÐòʱ£¬¾Í»áµÃµ½´íÎóµÄ½á¹û¡£ËùÒÔͨ³£Òª±£»¤ÏÖ³¡¡£

±£»¤ÏÖ³¡µÄ·½·¨ÊǰÑÖжϳÌÐòÖÐÓõ½µÄ¼Ä´æÆ÷¡¢´æ´¢Æ÷µÈÒª±£»¤µÄÄÚÈÝѹÈëµ½¶ÑÕ»¡£

7£­6 STCϵÁе¥Æ¬»úÖÐÈçºÎÑ¡ÔñºÍÉèÖÃÍⲿÖжϵıßÑØ´¥·¢ºÍµçƽ´¥·¢·½Ê½ £¿

TCON¼Ä´æÆ÷ÖеÄIT0/TCON.0ºÍIT1/TCON.2¾ö¶¨ÁËÍⲿÖжÏ0ºÍ1ÊÇϽµÑØ´¥·¢»¹ÊÇµÍµçÆ½´¥·¢¡£

µ±ITx=1£¨x=0,1£©£¬ÏµÍ³ÔÚINTx£¨x=0,1£©Òý½Å¼ì²âµ½Ï½µÑغó²úÉúÍⲿÖжϡ£

µ±ITx=0£¨x=0,1£©£¬ÏµÍ³ÔÚINTx£¨x=0,1£©Òý½Å¼ì²âµ½µÍµçƽºó²úÉúÍⲿÖжϡ£

7£­7 ÔÚSTC12C5A60S2µ¥Æ¬»úÖУ¬¼ÙÉèϵͳµÄʱÖÓÆµÂÊΪ12MHz£¬ÀûÓö¨Ê±/¼ÆÊýÆ÷T0£¬·Ö±ðÓûã±àÓïÑÔºÍC51±à³ÌʵÏÖÔÚP1.0Òý½ÅÊä³öÖÜÆÚΪ2sµÄ·½²¨¡£ÓüĴæÆ÷R2×÷Ϊ¶¨Ê±Æ÷T0ÖжϴÎÊý¼ÆÊýÆ÷¡£

·ÖÎö:Òª²úÉúÖÜÆÚ2sµÄ·½²¨£¬Ð趨ʱ1s¡£Ñ¡Ôñ12Tģʽ£¬T0x12=0£¬

1*12?1us£¬T0¹¤×÷ÔÚ·½Ê½1£¬×î´ó¶¨Ê±Ê±¼äΪf=12MHz£¬»úÆ÷ÖÜÆÚT=

12M216*T?65.536ms£¬ËùÒÔÒ»¸ö¶¨Ê±Æ÷Íê³É²»Á˶¨Ê±1sµÄÈÎÎñ¡£

£¨216-C£©*1us?50ms£¬¼ÆÊý³õ¿ÉÒÔÀûÓÃR2¼ÆÊý20´Î£¬Ã¿´Î¶¨Ê±50ms£¬Ôò

ÖµC=15536=3CB0H£¬

£¨1£©»ã±à³ÌÐò£º

ORG 0000H LJMP MAIN

ORG 000BH £»T0µÄÖжÏÏòÁ¿Èë¿ÚµØÖ· LJMP T0_INT

16