|
51單片機(jī)仿真00-99計(jì)數(shù)器,下面是原理圖:
匯編語(yǔ)言程序源碼:
- Count EQU 30H
- SP1 BIT P3.7
- ORG 0
- START: MOV Count,#00H
- NEXT: MOV A,Count
- 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
- WT: JNB SP1,WT
- WAIT: JB SP1,WAIT
- LCALL DELY10MS
- JB SP1,WAIT
- INC Count
- MOV A,Count
- CJNE A,#100,NEXT
- LJMP START
- DELY10MS: MOV R6,#20
- D1: MOV R7,#248
- DJNZ R7,$
- DJNZ R6,D1
- RET
- TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
- END
復(fù)制代碼 c語(yǔ)言源碼:
- #include <AT89X51.H>
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char Count;
-
- void delay10ms(void)
- {
- unsigned char i,j;
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
- }
-
- void main(void)
- {
- Count=0;
- P0=table[Count/10];
- P2=table[Count%10];
- while(1)
- {
- if(P3_7==0)
- {
- delay10ms();
- if(P3_7==0)
- {
- Count++;
- if(Count==100)
- {
- Count=0;
- }
- P0=table[Count/10];
- P2=table[Count%10];
- while(P3_7==0);
- }
- }
- }
- }
復(fù)制代碼
|
|