00-59秒計時器(利用軟件延時)
0.png (26.7 KB, 下載次數: 76)
下載附件
2016-10-21 00:57 上傳
匯編程序:
- Second EQU 30H
- ORG 0
- START: MOV Second,#00H
- NEXT: 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
- LCALL DELY1S
- INC Second
- MOV A,Second
- CJNE A,#60,NEXT
- LJMP START
- DELY1S: MOV R5,#100
- D2: MOV R6,#20
- D1: MOV R7,#248
- DJNZ R7,$
- DJNZ R6,D1
- DJNZ R5,D2
- 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 Second;
-
- void delay1s(void)
- {
- unsigned char i,j,k;
- for(k=100;k>0;k--)
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
- }
-
-
- void main(void)
- {
- Second=0;
- P0=table[Second/10];
- P2=table[Second%10];
- while(1)
- {
- delay1s();
- Second++;
- if(Second==60)
- {
- Second=0;
- }
- P0=table[Second/10];
- P2=table[Second%10];
- }
- }
復制代碼
|