📄 uart.lis
字号:
0124 ; }
0124 ;
0124 ; case 'R'://读取片内EEPROM
0124 ; {
0124 .dbline 85
0124 ; charInput=getchar();//无用的前导空格字符
0124 6DDF rcall _getchar
0126 C02E mov R12,R16
0128 .dbline 86
0128 ; for(i=0;i<4;i++)//将4位(0~4995)BCD转换为为integer
0128 6627 clr R22
012A 10C0 rjmp L35
012C L32:
012C .dbline 87
012C .dbline 88
012C 69DF rcall _getchar
012E 802F mov R24,R16
0130 8053 subi R24,48
0132 C82E mov R12,R24
0134 .dbline 89
0134 082F mov R16,R24
0136 1127 clr R17
0138 9501 movw R18,R10
013A 00D0 rcall empy16s
013C 400F add R20,R16
013E 511F adc R21,R17
0140 .dbline 90
0140 2AE0 ldi R18,10
0142 30E0 ldi R19,0
0144 8501 movw R16,R10
0146 00D0 rcall div16u
0148 5801 movw R10,R16
014A .dbline 91
014A L33:
014A .dbline 86
014A 6395 inc R22
014C L35:
014C .dbline 86
014C 6430 cpi R22,4
014E 70F3 brlo L32
0150 .dbline 92
0150 ; {
0150 ; charInput=getchar()-48;
0150 ; val+=charInput*temp;
0150 ; temp/=10;
0150 ; }
0150 ; eeprom_addr=val;
0150 50930200 sts _eeprom_addr+1,R21
0154 40930100 sts _eeprom_addr,R20
0158 .dbline 93
0158 ; InterruptFlag|=0b00000010;//通知Timer0中断程序,需要发送数据
0158 80910000 lds R24,_InterruptFlag
015C 8260 ori R24,2
015E 80930000 sts _InterruptFlag,R24
0162 .dbline 94
0162 ; break;
0162 95C0 rjmp L17
0164 L36:
0164 .dbline 98
0164 ; }
0164 ;
0164 ; case 'r'://读取AT2402(或者另外一块模拟AT2402的8Mega2#)EEPROM
0164 ; {
0164 .dbline 99
0164 ; charInput=getchar();//无用的前导空格字符
0164 4DDF rcall _getchar
0166 C02E mov R12,R16
0168 .dbline 100
0168 ; for(i=0;i<4;i++)//将4位(0~4995)BCD转换为为integer
0168 6627 clr R22
016A 10C0 rjmp L40
016C L37:
016C .dbline 101
016C .dbline 102
016C 49DF rcall _getchar
016E 802F mov R24,R16
0170 8053 subi R24,48
0172 C82E mov R12,R24
0174 .dbline 103
0174 082F mov R16,R24
0176 1127 clr R17
0178 9501 movw R18,R10
017A 00D0 rcall empy16s
017C 400F add R20,R16
017E 511F adc R21,R17
0180 .dbline 104
0180 2AE0 ldi R18,10
0182 30E0 ldi R19,0
0184 8501 movw R16,R10
0186 00D0 rcall div16u
0188 5801 movw R10,R16
018A .dbline 105
018A L38:
018A .dbline 100
018A 6395 inc R22
018C L40:
018C .dbline 100
018C 6430 cpi R22,4
018E 70F3 brlo L37
0190 .dbline 106
0190 ; {
0190 ; charInput=getchar()-48;
0190 ; val+=charInput*temp;
0190 ; temp/=10;
0190 ; }
0190 ; ExtendRomAddr=val;
0190 40930000 sts _ExtendRomAddr,R20
0194 .dbline 107
0194 ; ExtendRomRW|=0b00000010;//通知Main程序,需要发送At2402(或者Mega8 2#)EEPROM数据
0194 80910000 lds R24,_ExtendRomRW
0198 8260 ori R24,2
019A 80930000 sts _ExtendRomRW,R24
019E .dbline 108
019E ; break;
019E 77C0 rjmp L17
01A0 L41:
01A0 .dbline 112
01A0 ; }
01A0 ;
01A0 ; case 'W'://写入片内EEPROM
01A0 ; {
01A0 .dbline 113
01A0 ; charInput=getchar();//无效的空格字符
01A0 2FDF rcall _getchar
01A2 C02E mov R12,R16
01A4 .dbline 114
01A4 ; for(i=0;i<4;i++)//将4位(0~4995)BCD转换为为integer(integer地址)
01A4 6627 clr R22
01A6 10C0 rjmp L45
01A8 L42:
01A8 .dbline 115
01A8 .dbline 116
01A8 2BDF rcall _getchar
01AA 802F mov R24,R16
01AC 8053 subi R24,48
01AE C82E mov R12,R24
01B0 .dbline 117
01B0 082F mov R16,R24
01B2 1127 clr R17
01B4 9501 movw R18,R10
01B6 00D0 rcall empy16s
01B8 400F add R20,R16
01BA 511F adc R21,R17
01BC .dbline 118
01BC 2AE0 ldi R18,10
01BE 30E0 ldi R19,0
01C0 8501 movw R16,R10
01C2 00D0 rcall div16u
01C4 5801 movw R10,R16
01C6 .dbline 119
01C6 L43:
01C6 .dbline 114
01C6 6395 inc R22
01C8 L45:
01C8 .dbline 114
01C8 6430 cpi R22,4
01CA 70F3 brlo L42
01CC .dbline 120
01CC ; {
01CC ; charInput=getchar()-48;
01CC ; val+=charInput*temp;
01CC ; temp/=10;
01CC ; }
01CC ; eeprom_addr=val;
01CC 50930200 sts _eeprom_addr+1,R21
01D0 40930100 sts _eeprom_addr,R20
01D4 .dbline 122
01D4 ;
01D4 ; charInput=getchar();//无用的前导空格字符
01D4 15DF rcall _getchar
01D6 C02E mov R12,R16
01D8 .dbline 123
01D8 ; val=0;//复位
01D8 4427 clr R20
01DA 5527 clr R21
01DC .dbline 124
01DC ; temp=1000;//复位
01DC 88EE ldi R24,1000
01DE 93E0 ldi R25,3
01E0 5C01 movw R10,R24
01E2 .dbline 125
01E2 ; for(i=0;i<4;i++)//将4位(0~4995)BCD转换为为integer(需转换为char数据)
01E2 6627 clr R22
01E4 10C0 rjmp L49
01E6 L46:
01E6 .dbline 126
01E6 .dbline 127
01E6 0CDF rcall _getchar
01E8 802F mov R24,R16
01EA 8053 subi R24,48
01EC C82E mov R12,R24
01EE .dbline 128
01EE 082F mov R16,R24
01F0 1127 clr R17
01F2 9501 movw R18,R10
01F4 00D0 rcall empy16s
01F6 400F add R20,R16
01F8 511F adc R21,R17
01FA .dbline 129
01FA 2AE0 ldi R18,10
01FC 30E0 ldi R19,0
01FE 8501 movw R16,R10
0200 00D0 rcall div16u
0202 5801 movw R10,R16
0204 .dbline 130
0204 L47:
0204 .dbline 125
0204 6395 inc R22
0206 L49:
0206 .dbline 125
0206 6430 cpi R22,4
0208 70F3 brlo L46
020A .dbline 131
020A ; {
020A ; charInput=getchar()-48;
020A ; val+=charInput*temp;
020A ; temp/=10;
020A ; }
020A ; eeprom_val=(unsigned char)val;
020A 40930000 sts _eeprom_val,R20
020E .dbline 132
020E ; InterruptFlag|=0b00000100;//通知Timer0中断程序,需要写入数据
020E 80910000 lds R24,_InterruptFlag
0212 8460 ori R24,4
0214 80930000 sts _InterruptFlag,R24
0218 .dbline 133
0218 ; break;
0218 3AC0 rjmp L17
021A L50:
021A .dbline 137
021A ; }
021A ;
021A ; case 'w'://写入AT2402(或者另外一块模拟AT2402的8Mega2#)珽EPROM
021A ; {
021A .dbline 138
021A ; charInput=getchar();//无效的空格字符
021A F2DE rcall _getchar
021C C02E mov R12,R16
021E .dbline 139
021E ; for(i=0;i<4;i++)//将4位(0~4995)BCD转换为为integer(integer地址)
021E 6627 clr R22
0220 10C0 rjmp L54
0222 L51:
0222 .dbline 140
0222 .dbline 141
0222 EEDE rcall _getchar
0224 802F mov R24,R16
0226 8053 subi R24,48
0228 C82E mov R12,R24
022A .dbline 142
022A 082F mov R16,R24
022C 1127 clr R17
022E 9501 movw R18,R10
0230 00D0 rcall empy16s
0232 400F add R20,R16
0234 511F adc R21,R17
0236 .dbline 143
0236 2AE0 ldi R18,10
0238 30E0 ldi R19,0
023A 8501 movw R16,R10
023C 00D0 rcall div16u
023E 5801 movw R10,R16
0240 .dbline 144
0240 L52:
0240 .dbline 139
0240 6395 inc R22
0242 L54:
0242 .dbline 139
0242 6430 cpi R22,4
0244 70F3 brlo L51
0246 .dbline 145
0246 ; {
0246 ; charInput=getchar()-48;
0246 ; val+=charInput*temp;
0246 ; temp/=10;
0246 ; }
0246 ; ExtendRomAddr=val;
0246 40930000 sts _ExtendRomAddr,R20
024A .dbline 147
024A ;
024A ; charInput=getchar();//无用的前导空格字符
024A DADE rcall _getchar
024C C02E mov R12,R16
024E .dbline 148
024E ; val=0;//复位
024E 4427 clr R20
0250 5527 clr R21
0252 .dbline 149
0252 ; temp=1000;//复位
0252 88EE ldi R24,1000
0254 93E0 ldi R25,3
0256 5C01 movw R10,R24
0258 .dbline 150
0258 ; for(i=0;i<4;i++)//将4位(0~4995)BCD转换为为integer(需转换为char数据)
0258 6627 clr R22
025A 10C0 rjmp L58
025C L55:
025C .dbline 151
025C .dbline 152
025C D1DE rcall _getchar
025E 802F mov R24,R16
0260 8053 subi R24,48
0262 C82E mov R12,R24
0264 .dbline 153
0264 082F mov R16,R24
0266 1127 clr R17
0268 9501 movw R18,R10
026A 00D0 rcall empy16s
026C 400F add R20,R16
026E 511F adc R21,R17
0270 .dbline 154
0270 2AE0 ldi R18,10
0272 30E0 ldi R19,0
0274 8501 movw R16,R10
0276 00D0 rcall div16u
0278 5801 movw R10,R16
027A .dbline 155
027A L56:
027A .dbline 150
027A 6395 inc R22
027C L58:
027C .dbline 150
027C 6430 cpi R22,4
027E 70F3 brlo L55
0280 .dbline 156
0280 ; {
0280 ; charInput=getchar()-48;
0280 ; val+=charInput*temp;
0280 ; temp/=10;
0280 ; }
0280 ; ExtendRomVal=(unsigned char)val;
0280 40930000 sts _ExtendRomVal,R20
0284 .dbline 157
0284 ; ExtendRomRW|=0b00000100;//通知Main程序,需要写入At2402(或者Mega8 2#)EEPROM数据
0284 80910000 lds R24,_ExtendRomRW
0288 8460 ori R24,4
028A 80930000 sts _ExtendRomRW,R24
028E .dbline 158
028E ; break;
028E L16:
028E .dbline 163
028E .dbline 165
028E .dbline 166
028E L17:
028E .dbline -2
028E L14:
028E 00D0 rcall pop_gset5
0290 00D0 rcall pop_lset
0292 .dbline 0 ; func end
0292 1895 reti
0294 .dbsym r channel 14 c
0294 .dbsym r val 20 i
0294 .dbsym r i 22 c
0294 .dbsym r temp 10 i
0294 .dbsym r charInput 12 c
0294 .dbend
.area bss(ram, con, rel)
0000 .dbfile G:\Mega8程序\TCXO评估板\Main\Uart.c
0000 _eeprom_val::
0000 .blkb 1
0001 .dbsym e eeprom_val _eeprom_val c
0001 _eeprom_addr::
0001 .blkb 2
0003 .dbsym e eeprom_addr _eeprom_addr i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -