C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 1 C51 COMPILER V9.57.0.0, COMPILATION OF MODULE MAIN OBJECT MODULE PLACED IN .\Objects\main.obj COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE Main\main.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\Include) DEBUG OBJECTEXTEN -D PRINT(.\Listings\main.lst) TABS(2) OBJECT(.\Objects\main.obj) line level source 1 #include 2 #include 3 4 #include"public.h" 5 #include"lcd1602.h" 6 #include"key.h" 7 #include"timer.h" 8 #include"com_send.h" 9 10 u16 time_sig; 11 u16 time_50ms; 12 u16 time_gate_ms; 13 u8 send; 14 u8 pause; 15 u8 range_mode; 16 u8 gate_mode; 17 double result; 18 19 u8* range_mode_name[3] = {"L","M","H"}; 20 u8* gate_mode_name[4] = {" 1"," 2"," 5","10"}; 21 u8 gate_mode_number[4] = {1,2,5,10}; 22 23 u8 timer0_th = 0x4c; 24 u8 timer0_tl[3] = {0xa0,0x16,0x14}; 25 26 27 u8 range_auto; 28 u8 auto_count; 29 u16 range_h[3] = {100,50000,460000}; 30 31 void show_string_mode() 32 { 33 1 34 1 lcd1602_show_string(5,1,range_mode_name[range_mode]); 35 1 lcd1602_show_string(13,1,gate_mode_name[gate_mode]); 36 1 if(range_auto){ 37 2 lcd1602_show_string(6,1,"a"); 38 2 } 39 1 else{ 40 2 lcd1602_show_string(6,1," "); 41 2 } 42 1 } 43 44 void show_string_init() 45 { 46 1 lcd1602_show_string(0,0,"Frq:"); 47 1 lcd1602_show_string(14,0,"Hz"); 48 1 lcd1602_show_string(0,1,"Mode: Time:"); 49 1 if(range_mode){ 50 2 lcd1602_show_string(15,1,"s"); 51 2 } 52 1 else{ 53 2 lcd1602_show_string(15,1,"T"); 54 2 } C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 2 55 1 } 56 57 void reset(){ 58 1 timer0_reset(timer0_th,timer0_tl[range_mode]); 59 1 time_50ms=0; 60 1 if(range_mode) 61 1 { 62 2 timer1_reset(0x00,0x00); 63 2 }else 64 1 { 65 2 timer1_reset(0xFF,0xFF); 66 2 } 67 1 time_sig=0; 68 1 result = 0; 69 1 } 70 71 void change_range() 72 { 73 1 range_mode %= 3; 74 1 show_string_init(); 75 1 show_string_mode(); 76 1 } 77 78 int main() 79 { 80 1 u8 key=0; 81 1 range_mode = 1; 82 1 gate_mode = 0; 83 1 time_gate_ms = 20*gate_mode_number[gate_mode]; 84 1 85 1 lcd1602_init(); 86 1 send_init(); 87 1 88 1 show_string_init(); 89 1 show_string_mode(); 90 1 91 1 92 1 timer0_init(0x01,timer0_th,timer0_tl[range_mode]); 93 1 timer1_init(0x50,0x00,0x00); 94 1 timer0_open(); 95 1 timer1_open(); 96 1 97 1 while(1) 98 1 { 99 2 key=key_scan(0); 100 2 if(key==KEY1_PRESS) 101 2 { 102 3 range_mode++; 103 3 change_range(); 104 3 reset(); 105 3 } 106 2 else if(key==KEY2_PRESS) 107 2 { 108 3 gate_mode++; 109 3 gate_mode %= 4; 110 3 time_gate_ms = 20*gate_mode_number[gate_mode]; 111 3 show_string_mode(); 112 3 reset(); 113 3 } 114 2 else if(key==KEY3_PRESS) 115 2 { 116 3 range_auto = ~range_auto; C51 COMPILER V9.57.0.0 MAIN 05/23/2022 15:58:34 PAGE 3 117 3 show_string_mode(); 118 3 } 119 2 else if(key==KEY4_PRESS) 120 2 { 121 3 lcd1602_clear(); 122 3 show_string_init(); 123 3 show_string_mode(); 124 3 } 125 2 if(send==1) 126 2 { 127 3 char disp[10]; 128 3 if(range_mode) 129 3 { 130 4 result = (double)(time_sig*65536+TH1*256+TL1)/(double)(time_50ms*50+((TH0-timer0_th)*256+TL0-timer0_tl -[range_mode])/1000)*1000; 131 4 } 132 3 else 133 3 { 134 4 result = (double)1000000*gate_mode_number[gate_mode]/(double)(time_50ms*50006+((TH0-timer0_th)*256)+TL -0-timer0_tl[range_mode]); 135 4 } 136 3 if(range_auto && auto_count>0) 137 3 { 138 4 auto_count = 0; 139 4 if(range_mode < 2 && result>range_h[range_mode]) 140 4 { 141 5 range_mode += 1; 142 5 change_range(); 143 5 } 144 4 if(range_mode > 0 && result