first commit

This commit is contained in:
2018-05-14 01:54:25 +08:00
parent 6ad1fdafa7
commit a287786412
11 changed files with 2616 additions and 0 deletions

212
Listings/Interrupt_2.lst Normal file
View File

@ -0,0 +1,212 @@
C51 COMPILER V9.54 INTERRUPT_2 05/14/2018 01:49:10 PAGE 1
C51 COMPILER V9.54, COMPILATION OF MODULE INTERRUPT_2
OBJECT MODULE PLACED IN .\Objects\Interrupt_2.obj
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE Interrupt_2.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listin
-gs\Interrupt_2.lst) TABS(2) OBJECT(.\Objects\Interrupt_2.obj)
line level source
1 // Timer 0 take as interrupt
2 // Timer 1 take as interrupt
3
4 #include <reg51.h>
5
6 // <20>ŧi<C5A7><69><EFBFBD>ɨ禡
7 void delay_1500ms(void);
8
9 unsigned int timer0_counter = 150;
10 unsigned int timer1_counter = 150;
11 int seg_pos = 0, seg_num = 0;
12 int LED_mode = 0;
13 //LED
14 bit lightoff = 1;
15 bit lighton = 0;
16
17 char code LED_light[17] = {
18 ~0x00,
19 ~0x01,
20 ~0x03,
21 ~0x07,
22 ~0x0F,
23 ~0x1F,
24 ~0x3F,
25 ~0x7F,
26 ~0xFF,
27 ~0x7F,
28 ~0x3F,
29 ~0x1F,
30 ~0x0F,
31 ~0x07,
32 ~0x03,
33 ~0x01
34 };
35
36 //Segment
37 // <20>ŧi D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><CFBE>󱵸}
38 sbit P2_6 = P2^6;
39 sbit P2_7 = P2^7;
40
41 // <20>ŧi<C5A7>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD><DCBE>
42 void Slect_Seg(unsigned char number);
43 void Display_Seg(unsigned char display);
44
45 //<2F>ŧi<C5A7>Ʀr<C6A6><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
46 char code NUM[10] = {
47 0x3F, // 0
48 0x06, // 1
49 0x5B, // 2
50 0x4F, // 3
51 0x66, // 4
52 0x6D, // 5
53 0x7D, // 6
54 0x07, // 7
C51 COMPILER V9.54 INTERRUPT_2 05/14/2018 01:49:10 PAGE 2
55 0x7F, // 8
56 0x6F // 9
57 };
58
59 char code POS[6] = {
60 ~0x01, // 0xfe <20>N<EFBFBD>O 11111110
61 ~0x02, // 0000 0010
62 ~0x04, // 0000 0100
63 ~0x08, // 0000 1000
64 ~0x10, // 0001 0000
65 ~0x20 // 0010 0000
66 };
67
68
69 void main(void){
70 1
71 1 //<2F>}<7D><> Timer0 <20>M Timer1
72 1 TMOD = 0x11;
73 1
74 1 //interrupt control (timer0)
75 1 TL0 = (65536 - 9216) % 256;
76 1 TH0 = (65536 - 9216) / 256;
77 1 TF0 = 0;
78 1 TR0 = 1; //<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer0
79 1 ET0 = 1; //<2F>}<7D><> TF0 <20><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>Ҳն}<7D><>
80 1 EA = 1; //<2F>}<7D>Ҥ<EFBFBD><D2A4>_<EFBFBD>Ҳ<EFBFBD><D2B2>`<60>}<7D><>
81 1
82 1
83 1 //interrupt control (timer1)
84 1 TL1 = (65536 - 9216) % 256;
85 1 TH1 = (65536 - 9216) / 256;
86 1 TF1 = 0;
87 1 TR1 = 1; //<2F>}<7D>ҭp<D2AD>ɾ<EFBFBD> timer0
88 1 ET1 = 1; //<2F>}<7D><> TF0 <20><><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>Ҳն}<7D><>
89 1 }
90
91
92 // timer0 <20>b<EFBFBD>p<EFBFBD>ɨ쪺<C9A8>ɭ<EFBFBD>(TF0 = 1)<29>|<7C>I<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ƨ禡
93 void my_timer0(void) interrupt 1 {
94 1
95 1 //<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
96 1 TL0 = (65536 - 9216) % 256;
97 1 TH0 = (65536 - 9216) / 256;
98 1 TF0 = 0;
99 1
100 1 // timer0_counter <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
101 1 timer0_counter--;
102 1
103 1
104 1 //<2F><> timer0_counter <20><> 0 <20>ɡA<C9A1><41><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>
105 1 if (timer0_counter == 0){
106 2
107 2 // *********<2A><><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>*********
108 2 Slect_Seg(POS[seg_pos]); // <20>]<5D>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>G
109 2 Display_Seg(NUM[seg_num]); // <20><><EFBFBD>Ʀr
110 2 seg_pos = (seg_pos + 1) % 6;
111 2 seg_num = (seg_num + 1) % 10;
112 2
113 2 //<2F>N timer0_counter <20><><EFBFBD>ȳ]<5D>^ 150
114 2 timer0_counter = 150;
115 2
116 2 }
C51 COMPILER V9.54 INTERRUPT_2 05/14/2018 01:49:10 PAGE 3
117 1 }
118
119
120 // timer1 <20>b<EFBFBD>p<EFBFBD>ɨ쪺<C9A8>ɭ<EFBFBD>(TF1 = 1)<29>|<7C>I<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ƨ禡
121 void my_timer1(void) interrupt 3 {
122 1
123 1 //<2F>]<5D>w<EFBFBD><77><EFBFBD>l<EFBFBD><6C>
124 1 TL1 = (65536 - 9216) % 256;
125 1 TH1 = (65536 - 9216) / 256;
126 1 TF1 = 0;
127 1
128 1 // timer1_counter <20>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
129 1 timer1_counter--;
130 1
131 1
132 1 //<2F><> timer1_counter <20><> 0 <20>ɡA<C9A1><41><EFBFBD>@<40>C<EFBFBD>q<EFBFBD><71><EFBFBD>ܾ<EFBFBD>
133 1 if (timer1_counter == 0){
134 2
135 2 // ********* <20><><EFBFBD>@ LED *********
136 2 for(LED_mode = 0; LED_mode < 16; LED_mode++) {
137 3 P1 = LED_light[LED_mode];
138 3 }
139 2
140 2 //<2F>N timer0_counter <20><><EFBFBD>ȳ]<5D>^ 150
141 2 timer1_counter = 150;
142 2
143 2 }
144 1 }
145
146
147 void Slect_Seg(unsigned char number) {
148 1 int j = 0;
149 1
150 1 // <20><><EFBFBD><EFBFBD> D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>(<28>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>I)
151 1 P2_7 = 0;
152 1
153 1 // <20><><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>G
154 1 P0 = number;
155 1
156 1 // <20>}<7D>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47> D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>
157 1 P2_7 = 1;
158 1
159 1 // <20><><EFBFBD><EFBFBD>(<28>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>G)
160 1 for(j = 0; j < 120; j++);
161 1
162 1 // <20><><EFBFBD><EFBFBD> D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>(<28><><EFBFBD>Y<EFBFBD>i<EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>w<EFBFBD>G)
163 1 P2_7 = 0;
164 1 }
165
166 void Display_Seg(unsigned char display) {
167 1 int j = 0;
168 1 // <20><><EFBFBD><EFBFBD> D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>(<28>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>I)
169 1 P2_6 = 0;
170 1
171 1 // <20><><EFBFBD>w<EFBFBD><77><EFBFBD>X
172 1 P0 = display;
173 1
174 1 // <20>}<7D>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47> D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>
175 1 P2_6 = 1;
176 1
177 1 // <20><><EFBFBD><EFBFBD>(<28>Y<EFBFBD><59><EFBFBD>X)
178 1 for(j = 0; j < 120; j++);
C51 COMPILER V9.54 INTERRUPT_2 05/14/2018 01:49:10 PAGE 4
179 1
180 1 // <20><><EFBFBD><EFBFBD> D <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>(<28><><EFBFBD>Y<EFBFBD>i<EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>T<EFBFBD>w<EFBFBD><77>)
181 1 P2_6 = 0;
182 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 314 ----
CONSTANT SIZE = 33 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

212
Listings/Interrupt_2.m51 Normal file
View File

@ -0,0 +1,212 @@
BL51 BANKED LINKER/LOCATER V6.22 05/14/2018 01:49:10 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY:
C:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\Interrupt_2.obj TO .\Objects\Interrupt_2 PRINT (.\Listings\Interrupt_2.m51)
MEMORY MODEL: SMALL
INPUT MODULES INCLUDED:
.\Objects\Interrupt_2.obj (INTERRUPT_2)
C:\KEIL_V5\C51\LIB\C51S.LIB (?C_STARTUP)
C:\KEIL_V5\C51\LIB\C51S.LIB (?C?SIDIV)
C:\KEIL_V5\C51\LIB\C51S.LIB (?C_INIT)
C:\KEIL_V5\C51\LIB\C51S.LIB (?C?UIDIV)
LINK MAP OF MODULE: .\Objects\Interrupt_2 (INTERRUPT_2)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 000AH UNIT ?DT?INTERRUPT_2
0012H 000EH *** GAP ***
BIT 0020H.0 0000H.2 UNIT ?BI?INTERRUPT_2
0020H.2 0000H.6 *** GAP ***
IDATA 0021H 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
0003H 0008H *** GAP ***
CODE 000BH 0003H ABSOLUTE
000EH 000DH *** GAP ***
CODE 001BH 0003H ABSOLUTE
001EH 07E2H *** GAP ***
CODE 0800H 00A0H UNIT ?PR?MY_TIMER0?INTERRUPT_2
CODE 08A0H 008CH UNIT ?C_C51STARTUP
CODE 092CH 008BH UNIT ?C?LIB_CODE
CODE 09B7H 004FH UNIT ?PR?MY_TIMER1?INTERRUPT_2
CODE 0A06H 0021H UNIT ?CO?INTERRUPT_2
CODE 0A27H 001DH UNIT ?PR?MAIN?INTERRUPT_2
CODE 0A44H 0019H UNIT ?C_INITSEG
CODE 0A5DH 0017H UNIT ?PR?_SLECT_SEG?INTERRUPT_2
CODE 0A74H 0017H UNIT ?PR?_DISPLAY_SEG?INTERRUPT_2
OVERLAY MAP OF MODULE: .\Objects\Interrupt_2 (INTERRUPT_2)
SEGMENT
+--> CALLED SEGMENT
---------------------
?PR?MY_TIMER0?INTERRUPT_2
+--> ?CO?INTERRUPT_2
+--> ?PR?_SLECT_SEG?INTERRUPT_2
+--> ?PR?_DISPLAY_SEG?INTERRUPT_2
BL51 BANKED LINKER/LOCATER V6.22 05/14/2018 01:49:10 PAGE 2
*** NEW ROOT ***************************************************
?PR?MY_TIMER1?INTERRUPT_2
+--> ?CO?INTERRUPT_2
*** NEW ROOT ***************************************************
?C_C51STARTUP
+--> ?PR?MAIN?INTERRUPT_2
+--> ?C_INITSEG
SYMBOL TABLE OF MODULE: .\Objects\Interrupt_2 (INTERRUPT_2)
VALUE TYPE NAME
----------------------------------
------- MODULE INTERRUPT_2
C:0000H SYMBOL _ICE_DUMMY_
C:0A5DH PUBLIC _Slect_Seg
D:0080H PUBLIC P0
D:0090H PUBLIC P1
D:00A0H PUBLIC P2
B:00A8H.7 PUBLIC EA
B:00A0H.6 PUBLIC P2_6
B:00A0H.7 PUBLIC P2_7
C:0800H PUBLIC my_timer0
C:09B7H PUBLIC my_timer1
C:0A27H PUBLIC main
D:0089H PUBLIC TMOD
D:0008H PUBLIC timer0_counter
D:000AH PUBLIC timer1_counter
B:00A8H.1 PUBLIC ET0
B:00A8H.3 PUBLIC ET1
B:0088H.5 PUBLIC TF0
B:0088H.7 PUBLIC TF1
D:008CH PUBLIC TH0
D:008DH PUBLIC TH1
D:008AH PUBLIC TL0
C:0A06H PUBLIC LED_light
D:008BH PUBLIC TL1
B:0088H.4 PUBLIC TR0
B:0088H.6 PUBLIC TR1
B:0020H.0 PUBLIC lightoff
C:0A74H PUBLIC _Display_Seg
D:000CH PUBLIC LED_mode
C:0A17H PUBLIC NUM
C:0A21H PUBLIC POS
D:000EH PUBLIC seg_num
D:0010H PUBLIC seg_pos
B:0020H.1 PUBLIC lighton
------- PROC MAIN
C:0A27H LINE# 69
C:0A27H LINE# 72
C:0A2AH LINE# 75
BL51 BANKED LINKER/LOCATER V6.22 05/14/2018 01:49:10 PAGE 3
C:0A2DH LINE# 76
C:0A30H LINE# 77
C:0A32H LINE# 78
C:0A34H LINE# 79
C:0A36H LINE# 80
C:0A38H LINE# 84
C:0A3AH LINE# 85
C:0A3DH LINE# 86
C:0A3FH LINE# 87
C:0A41H LINE# 88
C:0A43H LINE# 89
------- ENDPROC MAIN
------- PROC MY_TIMER0
C:0800H LINE# 93
C:081DH LINE# 96
C:0820H LINE# 97
C:0823H LINE# 98
C:0825H LINE# 101
C:082DH LINE# 105
C:0833H LINE# 108
C:0845H LINE# 109
C:0857H LINE# 110
C:086BH LINE# 111
C:087FH LINE# 114
C:0885H LINE# 116
C:0885H LINE# 117
------- ENDPROC MY_TIMER0
------- PROC MY_TIMER1
C:09B7H LINE# 121
C:09BFH LINE# 124
C:09C2H LINE# 125
C:09C5H LINE# 126
C:09C7H LINE# 129
C:09CFH LINE# 133
C:09D5H LINE# 136
C:09D9H LINE# 137
C:09E9H LINE# 138
C:09F7H LINE# 141
C:09FDH LINE# 143
C:09FDH LINE# 144
------- ENDPROC MY_TIMER1
------- PROC _SLECT_SEG
D:0007H SYMBOL number
------- DO
D:0004H SYMBOL j
------- ENDDO
C:0A5DH LINE# 147
C:0A5DH LINE# 148
C:0A60H LINE# 151
C:0A62H LINE# 154
C:0A64H LINE# 157
C:0A66H LINE# 160
C:0A71H LINE# 163
C:0A73H LINE# 164
------- ENDPROC _SLECT_SEG
------- PROC _DISPLAY_SEG
D:0007H SYMBOL display
BL51 BANKED LINKER/LOCATER V6.22 05/14/2018 01:49:10 PAGE 4
------- DO
D:0004H SYMBOL j
------- ENDDO
C:0A74H LINE# 166
C:0A74H LINE# 167
C:0A77H LINE# 169
C:0A79H LINE# 172
C:0A7BH LINE# 175
C:0A7DH LINE# 178
C:0A88H LINE# 181
C:0A8AH LINE# 182
------- ENDPROC _DISPLAY_SEG
------- ENDMOD INTERRUPT_2
------- MODULE ?C?SIDIV
C:092CH PUBLIC ?C?SIDIV
------- ENDMOD ?C?SIDIV
------- MODULE ?C?UIDIV
C:0962H PUBLIC ?C?UIDIV
------- ENDMOD ?C?UIDIV
******************************************************************************
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0179H BYTE (18%) *
******************************************************************************
Program Size: data=19.2 xdata=0 code=660
LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)