add LED display

This commit is contained in:
2018-05-13 18:27:58 +08:00
parent be65a42cb8
commit 4a7ca33ec9
11 changed files with 357 additions and 141 deletions

99
Interrupt_1.c Executable file → Normal file
View File

@ -4,10 +4,21 @@
#include <reg51.h>
// <20>ŧi<C5A7><69><EFBFBD>ɨ禡
void delay10ms(void);
void delay_1500ms(void);
unsigned int timer0_counter = 150;
bit lightoff = 1;
bit lighton = 0;
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;
void main(void){
//<2F>}<7D><> Timer0 <20>M Timer1
@ -21,33 +32,87 @@ void main(void){
ET0 = 1; //<2F>}<7D><> TF0 <20><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>Ҳն}<7D><>
EA = 1; //<2F>}<7D>Ҥ<EFBFBD><D2A4>_<EFBFBD>Ҳ<EFBFBD><D2B2>`<60>}<7D><>
delay10ms();
while(1){
// do LED move up to down per 1.5 sec
// using Timer 1 Mode 1 to generate 10ms delay
P1 = 0xFF;
while (1) {
delay_1500ms();
P1_0 = lighton;
delay_1500ms();
P1_1 = lighton;
delay_1500ms();
P1_2 = lighton;
delay_1500ms();
P1_3 = lighton;
delay_1500ms();
P1_4 = lighton;
delay_1500ms();
P1_5 = lighton;
delay_1500ms();
P1_6 = lighton;
delay_1500ms();
P1_7 = lighton;
delay_1500ms();
P1_7 = lightoff;
delay_1500ms();
P1_6 = lightoff;
delay_1500ms();
P1_5 = lightoff;
delay_1500ms();
P1_4 = lightoff;
delay_1500ms();
P1_3 = lightoff;
delay_1500ms();
P1_2 = lightoff;
delay_1500ms();
P1_1 = lightoff;
delay_1500ms();
P1_0 = lightoff;
}
}
}
void delay10ms(void){
//<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
TF1 = 0;
TR1 = 0;
TL1 = (65536-9216) % 256;
TH1 = (65536-9216) / 256;
void delay_1500ms(void){
//<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer1
TR1 = 1;
int time = 0;
while(time < 150) {
//<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
TF1 = 0;
TR1 = 0;
TL1 = (65536-9216) % 256;
TH1 = (65536-9216) / 256;
//<2F><EFBFBD> TF1 <20>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(TF1 == 0);
//<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer1
TR1 = 1;
//<2F><><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>ɾ<EFBFBD>
TR1 = 0;
//<2F><> TF1 <20>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(TF1 == 0);
//<2F>N TF1 <20>k<EFBFBD>s
TF1 = 0;
//<2F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>ɾ<EFBFBD>
TR1 = 0;
//<2F>N TF1 <20>k<EFBFBD>s
TF1 = 0;
time++;
}
}

0
Interrupt_1.uvgui.jj971 Executable file → Normal file
View File

0
Interrupt_1.uvopt Executable file → Normal file
View File

0
Interrupt_1.uvproj Executable file → Normal file
View File

205
Listings/Interrupt_1.lst Executable file → Normal file
View File

@ -1,4 +1,4 @@
C51 COMPILER V9.54 INTERRUPT_1 05/13/2018 16:58:21 PAGE 1
C51 COMPILER V9.54 INTERRUPT_1 05/13/2018 18:13:58 PAGE 1
C51 COMPILER V9.54, COMPILATION OF MODULE INTERRUPT_1
@ -14,87 +14,154 @@ line level source
4 #include <reg51.h>
5
6 // <20>ŧi<C5A7><69><EFBFBD>ɨ禡
7 void delay10ms(void);
7 void delay_1500ms(void);
8
9 unsigned int timer0_counter = 150;
10
11 void main(void){
12 1
13 1 //<2F>}<7D><> Timer0 <20>M Timer1
14 1 TMOD = 0x11;
15 1
16 1 //interrupt control
17 1 TL0 = (65536 - 9216) % 256;
18 1 TH0 = (65536 - 9216) / 256;
19 1 TF0 = 0;
20 1 TR0 = 1; //<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer0
21 1 ET0 = 1; //<2F>}<7D><> TF0 <20><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>Ҳն}<7D><>
22 1 EA = 1; //<2F>}<7D>Ҥ<EFBFBD><D2A4>_<EFBFBD>Ҳ<EFBFBD><D2B2>`<60>}<7D><>
11 bit lightoff = 1;
12 bit lighton = 0;
13 sbit P1_0 = P1^0;
14 sbit P1_1 = P1^1;
15 sbit P1_2 = P1^2;
16 sbit P1_3 = P1^3;
17 sbit P1_4 = P1^4;
18 sbit P1_5 = P1^5;
19 sbit P1_6 = P1^6;
20 sbit P1_7 = P1^7;
21
22 void main(void){
23 1
24 1 delay10ms();
25 1
26 1 while(1){
27 2 // do LED move up to down per 1.5 sec
28 2 // using Timer 1 Mode 1 to generate 10ms delay
29 2 }
30 1 }
31
32
33 void delay10ms(void){
34 1 //<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
35 1 TF1 = 0;
36 1 TR1 = 0;
37 1 TL1 = (65536-9216) % 256;
38 1 TH1 = (65536-9216) / 256;
39 1
40 1 //<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer1
41 1 TR1 = 1;
42 1
43 1 //<2F><> TF1 <20>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
44 1 while(TF1 == 0);
45 1
46 1 //<2F><><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>ɾ<EFBFBD>
47 1 TR1 = 0;
48 1
49 1 //<2F>N TF1 <20>k<EFBFBD>s
50 1 TF1 = 0;
51 1 }
52
53
54 // timer0 <20>b<EFBFBD>p<EFBFBD>ɨ쪺<C9A8>ɭ<EFBFBD>(TF0 = 1)<29>|<7C>I<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ƨ禡
C51 COMPILER V9.54 INTERRUPT_1 05/13/2018 16:58:21 PAGE 2
24 1 //<2F>}<7D><> Timer0 <20>M Timer1
25 1 TMOD = 0x11;
26 1
27 1 //interrupt control
28 1 TL0 = (65536 - 9216) % 256;
29 1 TH0 = (65536 - 9216) / 256;
30 1 TF0 = 0;
31 1 TR0 = 1; //<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer0
32 1 ET0 = 1; //<2F>}<7D><> TF0 <20><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>Ҳն}<7D><>
33 1 EA = 1; //<2F>}<7D>Ҥ<EFBFBD><D2A4>_<EFBFBD>Ҳ<EFBFBD><D2B2>`<60>}<7D><>
34 1
35 1 while(1){
36 2 // do LED move up to down per 1.5 sec
37 2 // using Timer 1 Mode 1 to generate 10ms delay
38 2 P1 = 0xFF;
39 2 while (1) {
40 3 delay_1500ms();
41 3
42 3 P1_0 = lighton;
43 3 delay_1500ms();
44 3
45 3 P1_1 = lighton;
46 3 delay_1500ms();
47 3
48 3 P1_2 = lighton;
49 3 delay_1500ms();
50 3
51 3 P1_3 = lighton;
52 3 delay_1500ms();
53 3
54 3 P1_4 = lighton;
C51 COMPILER V9.54 INTERRUPT_1 05/13/2018 18:13:58 PAGE 2
55 void my_timer0(void) interrupt 1 {
56 1
57 1 //<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
58 1 TL0 = (65536 - 9216) % 256;
59 1 TH0 = (65536 - 9216) / 256;
60 1 TF0 = 0;
61 1
62 1 // timer0_counter <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
63 1 timer0_counter--;
64 1
65 1
66 1 //<2F><> timer0_counter <20><> 0 <20>ɡA<C9A1><41><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>
67 1 if (timer0_counter == 0){
68 2 // <20><><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>
69 2
70 2
71 2 //<2F>N timer0_counter <20><><EFBFBD>ȳ]<5D>^ 150
72 2 timer0_counter = 150;
73 2
74 2 }
75 1 }
55 3 delay_1500ms();
56 3
57 3 P1_5 = lighton;
58 3 delay_1500ms();
59 3
60 3 P1_6 = lighton;
61 3 delay_1500ms();
62 3
63 3 P1_7 = lighton;
64 3 delay_1500ms();
65 3
66 3 P1_7 = lightoff;
67 3 delay_1500ms();
68 3
69 3 P1_6 = lightoff;
70 3 delay_1500ms();
71 3
72 3 P1_5 = lightoff;
73 3 delay_1500ms();
74 3
75 3 P1_4 = lightoff;
76 3 delay_1500ms();
77 3
78 3 P1_3 = lightoff;
79 3 delay_1500ms();
80 3
81 3 P1_2 = lightoff;
82 3 delay_1500ms();
83 3
84 3 P1_1 = lightoff;
85 3 delay_1500ms();
86 3
87 3 P1_0 = lightoff;
88 3 }
89 2 }
90 1 }
91
92
93 void delay_1500ms(void){
94 1
95 1 int time = 0;
96 1 while(time < 150) {
97 2 //<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
98 2 TF1 = 0;
99 2 TR1 = 0;
100 2 TL1 = (65536-9216) % 256;
101 2 TH1 = (65536-9216) / 256;
102 2
103 2 //<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer1
104 2 TR1 = 1;
105 2
106 2 //<2F><> TF1 <20>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
107 2 while(TF1 == 0);
108 2
109 2 //<2F><><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>ɾ<EFBFBD>
110 2 TR1 = 0;
111 2
112 2 //<2F>N TF1 <20>k<EFBFBD>s
113 2 TF1 = 0;
114 2 time++;
115 2 }
116 1 }
C51 COMPILER V9.54 INTERRUPT_1 05/13/2018 18:13:58 PAGE 3
117
118
119 // timer0 <20>b<EFBFBD>p<EFBFBD>ɨ쪺<C9A8>ɭ<EFBFBD>(TF0 = 1)<29>|<7C>I<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ƨ禡
120 void my_timer0(void) interrupt 1 {
121 1
122 1 //<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
123 1 TL0 = (65536 - 9216) % 256;
124 1 TH0 = (65536 - 9216) / 256;
125 1 TF0 = 0;
126 1
127 1 // timer0_counter <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
128 1 timer0_counter--;
129 1
130 1
131 1 //<2F><> timer0_counter <20><> 0 <20>ɡA<C9A1><41><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>
132 1 if (timer0_counter == 0){
133 2 // <20><><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>
134 2
135 2
136 2 //<2F>N timer0_counter <20><><EFBFBD>ȳ]<5D>^ 150
137 2 timer0_counter = 150;
138 2
139 2 }
140 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 74 ----
CODE SIZE = 200 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.

154
Listings/Interrupt_1.m51 Executable file → Normal file
View File

@ -1,4 +1,4 @@
BL51 BANKED LINKER/LOCATER V6.22 05/13/2018 16:58:21 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22 05/13/2018 18:13:59 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY:
@ -23,7 +23,10 @@ LINK MAP OF MODULE: .\Objects\Interrupt_1 (INTERRUPT_1)
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0002H UNIT ?DT?INTERRUPT_1
IDATA 000AH 0001H UNIT ?STACK
000AH 0016H *** GAP ***
BIT 0020H.0 0000H.2 UNIT ?BI?INTERRUPT_1
0020H.2 0000H.6 *** GAP ***
IDATA 0021H 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
@ -31,10 +34,10 @@ LINK MAP OF MODULE: .\Objects\Interrupt_1 (INTERRUPT_1)
CODE 000BH 0003H ABSOLUTE
000EH 07F2H *** GAP ***
CODE 0800H 008CH UNIT ?C_C51STARTUP
CODE 088CH 0020H UNIT ?PR?MY_TIMER0?INTERRUPT_1
CODE 08ACH 0016H UNIT ?PR?MAIN?INTERRUPT_1
CODE 08C2H 0014H UNIT ?PR?DELAY10MS?INTERRUPT_1
CODE 08D6H 0005H UNIT ?C_INITSEG
CODE 088CH 0086H UNIT ?PR?MAIN?INTERRUPT_1
CODE 0912H 0022H UNIT ?PR?DELAY_1500MS?INTERRUPT_1
CODE 0934H 0020H UNIT ?PR?MY_TIMER0?INTERRUPT_1
CODE 0954H 0009H UNIT ?C_INITSEG
@ -49,23 +52,33 @@ SEGMENT
+--> ?C_INITSEG
?PR?MAIN?INTERRUPT_1
+--> ?PR?DELAY10MS?INTERRUPT_1
+--> ?PR?DELAY_1500MS?INTERRUPT_1
SYMBOL TABLE OF MODULE: .\Objects\Interrupt_1 (INTERRUPT_1)
VALUE TYPE NAME
BL51 BANKED LINKER/LOCATER V6.22 05/13/2018 18:13:59 PAGE 2
----------------------------------
------- MODULE INTERRUPT_1
BL51 BANKED LINKER/LOCATER V6.22 05/13/2018 16:58:21 PAGE 2
C:0000H SYMBOL _ICE_DUMMY_
D:0090H PUBLIC P1
B:00A8H.7 PUBLIC EA
C:088CH PUBLIC my_timer0
C:08ACH PUBLIC main
B:0090H.0 PUBLIC P1_0
B:0090H.1 PUBLIC P1_1
B:0090H.2 PUBLIC P1_2
B:0090H.3 PUBLIC P1_3
B:0090H.4 PUBLIC P1_4
B:0090H.5 PUBLIC P1_5
B:0090H.6 PUBLIC P1_6
B:0090H.7 PUBLIC P1_7
C:0912H PUBLIC delay_1500ms
C:0934H PUBLIC my_timer0
C:088CH PUBLIC main
D:0089H PUBLIC TMOD
D:0008H PUBLIC timer0_counter
B:00A8H.1 PUBLIC ET0
@ -75,53 +88,94 @@ SYMBOL TABLE OF MODULE: .\Objects\Interrupt_1 (INTERRUPT_1)
D:008DH PUBLIC TH1
D:008AH PUBLIC TL0
D:008BH PUBLIC TL1
C:08C2H PUBLIC delay10ms
B:0088H.4 PUBLIC TR0
B:0088H.6 PUBLIC TR1
B:0020H.0 PUBLIC lightoff
B:0020H.1 PUBLIC lighton
------- PROC MAIN
C:08ACH LINE# 11
C:08ACH LINE# 14
C:08AFH LINE# 17
C:08B2H LINE# 18
C:08B5H LINE# 19
C:08B7H LINE# 20
C:08B9H LINE# 21
C:08BBH LINE# 22
C:08BDH LINE# 24
C:08C0H LINE# 26
C:08C0H LINE# 29
C:088CH LINE# 22
C:088CH LINE# 25
C:088FH LINE# 28
C:0892H LINE# 29
C:0895H LINE# 30
C:0897H LINE# 31
C:0899H LINE# 32
C:089BH LINE# 33
C:089DH LINE# 35
C:089DH LINE# 38
C:08A0H LINE# 39
C:08A0H LINE# 40
C:08A3H LINE# 42
C:08A7H LINE# 43
C:08AAH LINE# 45
C:08AEH LINE# 46
C:08B1H LINE# 48
C:08B5H LINE# 49
C:08B8H LINE# 51
C:08BCH LINE# 52
C:08BFH LINE# 54
C:08C3H LINE# 55
C:08C6H LINE# 57
C:08CAH LINE# 58
C:08CDH LINE# 60
C:08D1H LINE# 61
BL51 BANKED LINKER/LOCATER V6.22 05/13/2018 18:13:59 PAGE 3
C:08D4H LINE# 63
C:08D8H LINE# 64
C:08DBH LINE# 66
C:08DFH LINE# 67
C:08E2H LINE# 69
C:08E6H LINE# 70
C:08E9H LINE# 72
C:08EDH LINE# 73
C:08F0H LINE# 75
C:08F4H LINE# 76
C:08F7H LINE# 78
C:08FBH LINE# 79
C:08FEH LINE# 81
C:0902H LINE# 82
C:0905H LINE# 84
C:0909H LINE# 85
C:090CH LINE# 87
C:0910H LINE# 88
------- ENDPROC MAIN
------- PROC DELAY10MS
C:08C2H LINE# 33
C:08C2H LINE# 35
C:08C4H LINE# 36
C:08C6H LINE# 37
C:08C9H LINE# 38
C:08CCH LINE# 41
C:08CEH LINE# 44
C:08D1H LINE# 47
C:08D3H LINE# 50
C:08D5H LINE# 51
------- ENDPROC DELAY10MS
------- PROC DELAY_1500MS
------- DO
D:0006H SYMBOL time
------- ENDDO
C:0912H LINE# 93
C:0912H LINE# 95
C:0915H LINE# 96
C:0915H LINE# 98
C:0917H LINE# 99
C:0919H LINE# 100
C:091CH LINE# 101
C:091FH LINE# 104
C:0921H LINE# 107
C:0924H LINE# 110
C:0926H LINE# 113
C:0928H LINE# 114
C:092DH LINE# 115
C:0933H LINE# 116
------- ENDPROC DELAY_1500MS
------- PROC MY_TIMER0
C:088CH LINE# 55
C:088EH LINE# 58
C:0891H LINE# 59
C:0894H LINE# 60
C:0896H LINE# 63
C:089EH LINE# 67
C:08A4H LINE# 72
C:08A9H LINE# 74
C:08A9H LINE# 75
C:0934H LINE# 120
C:0936H LINE# 123
C:0939H LINE# 124
C:093CH LINE# 125
C:093EH LINE# 128
C:0946H LINE# 132
C:094CH LINE# 137
C:0951H LINE# 139
C:0951H LINE# 140
------- ENDPROC MY_TIMER0
------- ENDMOD INTERRUPT_1
******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0051H BYTE ( 3%) *
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 00D3H BYTE (10%) *
******************************************************************************
BL51 BANKED LINKER/LOCATER V6.22 05/13/2018 16:58:21 PAGE 3
Program Size: data=11.0 xdata=0 code=225
Program Size: data=11.2 xdata=0 code=355
LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)

BIN
Objects/Interrupt_1 Executable file → Normal file

Binary file not shown.

3
Objects/Interrupt_1.build_log.htm Executable file → Normal file
View File

@ -25,7 +25,8 @@ Project File Date: 05/12/2018
Rebuild target 'Target 1'
compiling Interrupt_1.c...
linking...
Program Size: data=11.0 xdata=0 code=225
Program Size: data=11.2 xdata=0 code=355
creating hex file from ".\Objects\Interrupt_1"...
".\Objects\Interrupt_1" - 0 Error(s), 0 Warning(s).
</pre>
</body>

29
Objects/Interrupt_1.hex Normal file
View File

@ -0,0 +1,29 @@
:0809540002080096C180C101F8
:10088C00758911E4F58A758CDCC28DD28CD2A9D213
:10089C00AF7590FF120912A2019290120912A201D7
:1008AC009291120912A2019292120912A201929330
:1008BC00120912A2019294120912A2019295120924
:1008CC0012A2019296120912A2019297120912A277
:1008DC00009297120912A2009296120912A200928B
:1008EC0095120912A2009294120912A2009293126C
:1008FC000912A2009292120912A2009291120912EC
:06090C00A2009290808E13
:10091200E4FFFEC28FC28EE4F58B758DDCD28E3081
:100922008FFDC28EC28F0FBF00010EEF64964E7014
:01093200E2E2
:0109330022A1
:03000B00020934B3
:10093400C0E0758A00758CDCC28DE509150970026A
:100944001508E50945087005F508750996D0E032E3
:03000000020800F3
:0C080000787FE4F6D8FD758120020847DF
:10080C0002088CE493A3F8E493A34003F68001F26E
:10081C0008DFF48029E493A3F85407240CC8C333ED
:10082C00C4540F4420C8834004F456800146F6DFBC
:10083C00E4800B0102040810204080900954E47EEF
:10084C00019360BCA3FF543F30E509541FFEE493B1
:10085C00A360010ECF54C025E060A840B8E493A378
:10086C00FAE493A3F8E493A3C8C582C8CAC583CAA3
:10087C00F0A3C8C582C8CAC583CADFE9DEE780BE5B
:01095C00009A
:00000001FF

0
Objects/Interrupt_1.lnp Executable file → Normal file
View File

BIN
Objects/Interrupt_1.obj Executable file → Normal file

Binary file not shown.