51單片機仿真00-99計數器,下面是原理圖:
0.png (32.24 KB, 下載次數: 53)
下載附件
2016-10-21 01:10 上傳
0.png (41.6 KB, 下載次數: 28)
下載附件
2016-10-21 01:10 上傳
匯編語言程序源碼:
- 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
復制代碼 c語言源碼:
- #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);
- }
- }
- }
- }
復制代碼
0.png (53.9 KB, 下載次數: 30)
下載附件
2016-10-21 01:09 上傳
|