⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.lis

📁 详细介绍M8两版间通讯
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -