¹ØÓÚµ¥Æ¬»úCÓïÑÔ»ã±àʵÀý ÏÂÔØ±¾ÎÄ

CJNE A,#60,NEX MOV SECOND,#00H NEX: MOV A,SECOND MOV B,#10 DIV AB

MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B

MOVC A,@A+DPTR MOV P2,A NEXT: RETI

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END

2£® CÓïÑÔÔ´³ÌÐò<ÖжϷ¨£© #include

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00}¡£ unsigned char second¡£ unsigned char tcount¡£

void main(void> {

TMOD=0x01¡£

TH0=(65536-50000>/256¡£ TL0=(65536-50000>%6¡£ TR0=1¡£

ET0=1¡£ µ±ET0λΪ1ÇÒEAλҲΪ1ʱ£¬¿ª·ÅINT1. (INT1ºÍINT0ΪÍⲿÖжÏ> EA=1¡£ tcount=0¡£ second=0¡£

P0=dispcode[second/10]¡£ P2=dispcode[second]¡£ while(1>¡£ }

void t0(void> interrupt 1 using 0 {

tcount++¡£ if(tcount==20> {

tcount=0¡£ second++¡£ if(second==60> {

second=0¡£ }

P0=dispcode[second/10]¡£ P2=dispcode[second]¡£ }

TH0=(65536-50000>/256¡£ TL0=(65536-50000>%6¡£ } 16£® ¶¨Ê±¼ÆÊýÆ÷T0×÷¶¨Ê±Ó¦Óü¼Êõ<¶þ£©

1£® ʵÑéÈÎÎñ

ÓÃAT89S51µÄ¶¨Ê±/¼ÆÊýÆ÷T0²úÉú2ÃëÖӵĶ¨Ê±£¬Ã¿µ±2Ã붨ʱµ½À´Ê±£¬¸ü»»Ö¸Ê¾µÆÉÁ˸£¬Ã¿¸öָʾÉÁ˸µÄƵÂÊΪ0.2Ã룬Ҳ¾ÍÊÇ˵£¬¿ªÊ¼L1ָʾµÆÒÔ0.2ÃëµÄËÙÂÊÉÁ˸£¬µ±2Ã붨ʱµ½À´Ö®ºó£¬L2¿ªÊ¼ÒÔ0.2ÃëµÄËÙÂÊÉÁ˸£¬Èç´ËÑ­»·ÏÂÈ¥¡£0.2ÃëµÄÉÁ˸ËÙÂÊÒ²Óɶ¨Ê±/¼ÆÊýÆ÷T0À´Íê³É¡£ 2£® µç·ԭÀíͼ

ͼ4.16.1 3£® ϵͳ°åÓ²¼þÁ¬Ïß

<1£® °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP1.0£­P1.3Óõ¼ÏßÁ¬½Óµ½¡°°Ë··¢¹â¶þ¼«¹Üָʾģ¿é¡±ÇøÓòÖеÄ

L1£­L4ÉÏ 4£® ³ÌÐòÉè¼ÆÄÚÈÝ

<1£® ÒòΪ²ÉÓÃÖжϷ½Ê½À´Íê³É£¬Òò´Ë£¬¶ÔÓÚÖжÏÔ´±ØÐëËüµÄÖжÏÈë¿ÚµØÖ·£¬¶ÔÓÚ¶¨Ê±/¼ÆÊýÆ÷

T0À´Ëµ£¬ÖжÏÈë¿ÚµØÖ·Îª000BH£¬Òò´ËÔÚÖжÏÈë¿ÚµØ·½¼ÓÈë³¤Ìø×ªÖ¸ÁîÀ´Ö´ÐÐÖжϷþÎñ

³ÌÐò¡£Êéд»ã±àÔ´³ÌÐò¸ñʽÈçÏÂËùʾ£º

ORG 00H LJMP START

ORG 0BH ¡£¶¨Ê±/¼ÆÊýÆ÷T0ÖжÏÈë¿ÚµØÖ·

LJMP INT_T0

START: NOP ¡£Ö÷³ÌÐò¿ªÊ¼

. .

INT_T0: PUSH ACC ¡£¶¨Ê±/¼ÆÊýÆ÷T0ÖжϷþÎñ³ÌÐò

PUSH PSW

. . POP PSW POP ACC

RETI ¡£ÖжϷþÎñ³ÌÐò·µ»Ø

END <2£® ¶¨Ê±2Ã룬²ÉÓÃ16λ¶¨Ê±50ms£¬¹²¶¨Ê±40´Î²Å¿É´ïµ½2Ã룬ÿ50ms²úÉúÒ»Öжϣ¬¶¨Ê±

µÄ40´ÎÊýÔÚÖжϷþÎñ³ÌÐòÖÐÍê³É£¬Í¬Ñù0.2ÃëµÄ¶¨Ê±£¬ÐèÒª4´Î²Å¿É´ïµ½0.2Ãë¡£¶ÔÓÚ

ÖжϳÌÐò£¬ÔÚÖ÷³ÌÐòÖÐÒª¶ÔÖжϿªÖжϡ£ <3£® ÒòΪÿ´Î2Ã붨ʱµ½Ê±£¬L1£­L4Òª½»ÌæÉÁ˸¡£²ÉÓÃIDÀ´ºÅÀ´Ê¶±ð¡£µ±ID£½0ʱ£¬L1ÔÚÉÁ

˸£¬µ±ID£½1ʱ£¬L2ÔÚÉÁ˸£»µ±ID£½2ʱ£¬L3ÔÚÉÁ˸£»µ±ID£½3ʱ£¬L4ÔÚÉÁ˸ 5£® ³ÌÐò¿òͼ

T0ÖжϷþÎñ³ÌÐò¿òͼ

Ö÷³ÌÐò¿òͼ

ͼ4.16.2

6£® »ã±àÔ´³ÌÐò

6£® »ã±àÔ´³ÌÐò TCOUNT2S EQU 30H TCNT02S EQU 31H ID EQU 32H ORG 00H LJMP START ORG 0BH LJMP INT_T0

START: MOV TCOUNT2S,#00H MOV TCNT02S,#00H MOV ID,#00H MOV TMOD,#01H

MOV TH0,#(65536-50000> / 256 MOV TL0,#(65536-50000> MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $

INT_T0: MOV TH0,#(65536-50000> / 256 MOV TL0,#(65536-50000> MOD 256 INC TCOUNT2S MOV A,TCOUNT2S CJNE A,#40,NEXT MOV TCOUNT2S,#00H INC ID MOV A,ID