diff --git a/Interrupt_1.c b/Interrupt_1.c old mode 100755 new mode 100644 index 668c1d8..2d86351 --- a/Interrupt_1.c +++ b/Interrupt_1.c @@ -4,10 +4,21 @@ #include // 宣告延時函式 -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){ //開啟 Timer0 和 Timer1 @@ -21,33 +32,87 @@ void main(void){ ET0 = 1; //開啟 TF0 的中斷模組開關 EA = 1; //開啟中斷模組總開關 - 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){ - //設定初始值 - TF1 = 0; - TR1 = 0; - TL1 = (65536-9216) % 256; - TH1 = (65536-9216) / 256; +void delay_1500ms(void){ - //開啟計時器 timer1 - TR1 = 1; - - //當 TF1 沒有溢位 - while(TF1 == 0); - - //關閉計時器 - TR1 = 0; - - //將 TF1 歸零 - TF1 = 0; + int time = 0; + while(time < 150) { + //設定初始值 + TF1 = 0; + TR1 = 0; + TL1 = (65536-9216) % 256; + TH1 = (65536-9216) / 256; + + //開啟計時器 timer1 + TR1 = 1; + + //當 TF1 沒有溢位 + while(TF1 == 0); + + //關閉計時器 + TR1 = 0; + + //將 TF1 歸零 + TF1 = 0; + time++; + } } diff --git a/Interrupt_1.uvgui.jj971 b/Interrupt_1.uvgui.jj971 old mode 100755 new mode 100644 diff --git a/Interrupt_1.uvopt b/Interrupt_1.uvopt old mode 100755 new mode 100644 diff --git a/Interrupt_1.uvproj b/Interrupt_1.uvproj old mode 100755 new mode 100644 diff --git a/Listings/Interrupt_1.lst b/Listings/Interrupt_1.lst old mode 100755 new mode 100644 index 466955b..135e20e --- a/Listings/Interrupt_1.lst +++ b/Listings/Interrupt_1.lst @@ -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 5 6 // 宣告延時函式 - 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 //開啟 Timer0 和 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; //開啟計時器 timer0 - 21 1 ET0 = 1; //開啟 TF0 的中斷模組開關 - 22 1 EA = 1; //開啟中斷模組總開關 - 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 //設定初始值 - 35 1 TF1 = 0; - 36 1 TR1 = 0; - 37 1 TL1 = (65536-9216) % 256; - 38 1 TH1 = (65536-9216) / 256; - 39 1 - 40 1 //開啟計時器 timer1 - 41 1 TR1 = 1; - 42 1 - 43 1 //當 TF1 沒有溢位 - 44 1 while(TF1 == 0); - 45 1 - 46 1 //關閉計時器 - 47 1 TR1 = 0; - 48 1 - 49 1 //將 TF1 歸零 - 50 1 TF1 = 0; - 51 1 } - 52 - 53 - 54 // timer0 在計時到的時候(TF0 = 1)會呼叫的中斷副函式 - C51 COMPILER V9.54 INTERRUPT_1 05/13/2018 16:58:21 PAGE 2 + 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 //開啟 Timer0 和 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; //開啟計時器 timer0 + 32 1 ET0 = 1; //開啟 TF0 的中斷模組開關 + 33 1 EA = 1; //開啟中斷模組總開關 + 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 //設定初始值 - 58 1 TL0 = (65536 - 9216) % 256; - 59 1 TH0 = (65536 - 9216) / 256; - 60 1 TF0 = 0; - 61 1 - 62 1 // timer0_counter 一直遞減 - 63 1 timer0_counter--; - 64 1 - 65 1 - 66 1 //當 timer0_counter 為 0 時,實作七段顯示器 - 67 1 if (timer0_counter == 0){ - 68 2 // 實作七段顯示器 - 69 2 - 70 2 - 71 2 //將 timer0_counter 的值設回 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 //設定初始值 + 98 2 TF1 = 0; + 99 2 TR1 = 0; + 100 2 TL1 = (65536-9216) % 256; + 101 2 TH1 = (65536-9216) / 256; + 102 2 + 103 2 //開啟計時器 timer1 + 104 2 TR1 = 1; + 105 2 + 106 2 //當 TF1 沒有溢位 + 107 2 while(TF1 == 0); + 108 2 + 109 2 //關閉計時器 + 110 2 TR1 = 0; + 111 2 + 112 2 //將 TF1 歸零 + 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 在計時到的時候(TF0 = 1)會呼叫的中斷副函式 + 120 void my_timer0(void) interrupt 1 { + 121 1 + 122 1 //設定初始值 + 123 1 TL0 = (65536 - 9216) % 256; + 124 1 TH0 = (65536 - 9216) / 256; + 125 1 TF0 = 0; + 126 1 + 127 1 // timer0_counter 一直遞減 + 128 1 timer0_counter--; + 129 1 + 130 1 + 131 1 //當 timer0_counter 為 0 時,實作七段顯示器 + 132 1 if (timer0_counter == 0){ + 133 2 // 實作七段顯示器 + 134 2 + 135 2 + 136 2 //將 timer0_counter 的值設回 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. diff --git a/Listings/Interrupt_1.m51 b/Listings/Interrupt_1.m51 old mode 100755 new mode 100644 index 577b44e..e00e987 --- a/Listings/Interrupt_1.m51 +++ b/Listings/Interrupt_1.m51 @@ -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) diff --git a/Objects/Interrupt_1 b/Objects/Interrupt_1 old mode 100755 new mode 100644 index 78c1233..e09b660 Binary files a/Objects/Interrupt_1 and b/Objects/Interrupt_1 differ diff --git a/Objects/Interrupt_1.build_log.htm b/Objects/Interrupt_1.build_log.htm old mode 100755 new mode 100644 index 64a50ef..dac3e39 --- a/Objects/Interrupt_1.build_log.htm +++ b/Objects/Interrupt_1.build_log.htm @@ -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). diff --git a/Objects/Interrupt_1.hex b/Objects/Interrupt_1.hex new file mode 100644 index 0000000..fb58428 --- /dev/null +++ b/Objects/Interrupt_1.hex @@ -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 diff --git a/Objects/Interrupt_1.lnp b/Objects/Interrupt_1.lnp old mode 100755 new mode 100644 diff --git a/Objects/Interrupt_1.obj b/Objects/Interrupt_1.obj old mode 100755 new mode 100644 index e336297..e404908 Binary files a/Objects/Interrupt_1.obj and b/Objects/Interrupt_1.obj differ