📄 icc_gmj.lst
字号:
0257 940E0FA7 CALL pop_gset2
0259 9508 RET
_ZLG7290_SendBuf:
i --> R20
num --> R22
display_buf --> R10
025A 940E0FB7 CALL push_gset3
025C 2F62 MOV R22,R18
025D 0158 MOVW R10,R16
(0118) }
(0119) //向zlg7290的显示缓冲区发送数据
(0120) void ZLG7290_SendBuf(unsigned char *display_buf,unsigned char num)
(0121) {
(0122) unsigned char i;
(0123) for(i=0;i<num;i++)
025E 2744 CLR R20
025F C009 RJMP 0x0269
(0124) {
(0125) ZLG7290_SendCmd(0x60+i,*display_buf);
0260 01F5 MOVW R30,R10
0261 8120 LDD R18,Z+0
0262 2F04 MOV R16,R20
0263 5A00 SUBI R16,0xA0
0264 DFE0 RCALL _ZLG7290_SendCmd
(0126) display_buf++;
0265 01C5 MOVW R24,R10
0266 9601 ADIW R24,1
0267 015C MOVW R10,R24
0268 9543 INC R20
0269 1746 CP R20,R22
026A F3A8 BCS 0x0260
026B 940E0FAA CALL pop_gset3
026D 9508 RET
_ZLG7290_GetKey:
rece --> Y+3
026E 9724 SBIW R28,4
(0127) }
(0128) }
(0129) //zlg7290的键值
(0130) unsigned char ZLG7290_GetKey()
(0131) { unsigned char rece=0;
026F 2422 CLR R2
0270 822B STD Y+3,R2
(0132) if( IRcvStr(zlg7290,1,&rece,1)==0 ) return (0);
0271 E081 LDI R24,1
0272 838A STD Y+2,R24
0273 01CE MOVW R24,R28
0274 9603 ADIW R24,3
0275 8399 STD Y+1,R25
0276 8388 STD Y+0,R24
0277 E021 LDI R18,1
0278 E700 LDI R16,0x70
0279 DF37 RCALL _IRcvStr
027A 2300 TST R16
027B F411 BNE 0x027E
027C 2700 CLR R16
027D C001 RJMP 0x027F
(0133) // delay_ms(10);
(0134) return rece;
027E 810B LDD R16,Y+3
027F 9624 ADIW R28,4
0280 9508 RET
_disstring:
at --> R20
num --> Y+0
chr2 --> R12
i --> R22
chr --> R14
chr1 --> R10
tmp --> Y+11
0281 931A ST R17,-Y
0282 930A ST R16,-Y
0283 940E0FB3 CALL push_gset5
0285 9721 SBIW R28,1
(0135) }
(0136) //向ZLG7290发送字符串
(0137) void disstring(char *tmp)
(0138) {
(0139) unsigned char num;
(0140) unsigned char i;
(0141) unsigned char chr,chr1,chr2;
(0142) char *at;
(0143) num=strlen(tmp);
0286 850B LDD R16,Y+11
0287 851C LDD R17,Y+12
0288 940E0ECF CALL _strlen
028A 8308 STD Y+0,R16
(0144) //at=strchr(tmp,46);
(0145) //if (at[0]==0) num=num-1;
(0146) //if (num>=8) num=8;
(0147) at=tmp;
028B 854B LDD R20,Y+11
028C 855C LDD R21,Y+12
(0148) if (num>8)
028D E088 LDI R24,0x8
028E 2E00 MOV R0,R16
028F 1780 CP R24,R16
0290 F440 BCC 0x0299
(0149) {
(0150) if (*at==46) num=9;
0291 01FA MOVW R30,R20
0292 8180 LDD R24,Z+0
0293 328E CPI R24,0x2E
0294 F411 BNE 0x0297
0295 E089 LDI R24,0x9
0296 8388 STD Y+0,R24
(0151) at++;
0297 5F4F SUBI R20,0xFF
0298 4F5F SBCI R21,0xFF
(0152) }
(0153) for (i=0;i<num;i++)
0299 2766 CLR R22
029A C0DC RJMP 0x0377
(0154) {
(0155) chr=0x68-i;
029B E688 LDI R24,0x68
029C 2EE8 MOV R14,R24
029D 1AE6 SUB R14,R22
(0156) chr=*tmp;
029E 85EB LDD R30,Y+11
029F 85FC LDD R31,Y+12
02A0 80E0 LDD R14,Z+0
(0157) switch (chr)
02A1 2D4E MOV R20,R14
02A2 2755 CLR R21
02A3 3642 CPI R20,0x62
02A4 E0E0 LDI R30,0
02A5 075E CPC R21,R30
02A6 F409 BNE 0x02A8
02A7 C079 RJMP 0x0321
02A8 3643 CPI R20,0x63
02A9 E0E0 LDI R30,0
02AA 075E CPC R21,R30
02AB F409 BNE 0x02AD
02AC C0A7 RJMP 0x0354
02AD 3644 CPI R20,0x64
02AE E0E0 LDI R30,0
02AF 075E CPC R21,R30
02B0 F409 BNE 0x02B2
02B1 C075 RJMP 0x0327
02B2 3648 CPI R20,0x68
02B3 E0E0 LDI R30,0
02B4 075E CPC R21,R30
02B5 F409 BNE 0x02B7
02B6 C0A0 RJMP 0x0357
02B7 3649 CPI R20,0x69
02B8 E0E0 LDI R30,0
02B9 075E CPC R21,R30
02BA F409 BNE 0x02BC
02BB C07A RJMP 0x0336
02BC E689 LDI R24,0x69
02BD E090 LDI R25,0
02BE 1784 CP R24,R20
02BF 0795 CPC R25,R21
02C0 F11C BLT 0x02E4
02C1 3240 CPI R20,0x20
02C2 E0E0 LDI R30,0
02C3 075E CPC R21,R30
02C4 F409 BNE 0x02C6
02C5 C055 RJMP 0x031B
02C6 3240 CPI R20,0x20
02C7 E0E0 LDI R30,0
02C8 075E CPC R21,R30
02C9 F40C BGE 0x02CB
02CA C095 RJMP 0x0360
02CB 324E CPI R20,0x2E
02CC E0E0 LDI R30,0
02CD 075E CPC R21,R30
02CE F40C BGE 0x02D0
02CF C090 RJMP 0x0360
02D0 E585 LDI R24,0x55
02D1 E090 LDI R25,0
02D2 1784 CP R24,R20
02D3 0795 CPC R25,R21
02D4 F40C BGE 0x02D6
02D5 C08A RJMP 0x0360
02D6 E002 LDI R16,2
02D7 E010 LDI R17,0
02D8 019A MOVW R18,R20
02D9 940E0F97 CALL empy16s
02DB 01F8 MOVW R30,R16
02DC EF88 LDI R24,0xF8
02DD EF9F LDI R25,0xFF
02DE 0FE8 ADD R30,R24
02DF 1FF9 ADC R31,R25
02E0 9005 LPM R0,Z+
02E1 9014 LPM R1,0(Z)
02E2 01F0 MOVW R30,R0
02E3 9409 IJMP
02E4 3741 CPI R20,0x71
02E5 E0E0 LDI R30,0
02E6 075E CPC R21,R30
02E7 F409 BNE 0x02E9
02E8 C05C RJMP 0x0345
02E9 3742 CPI R20,0x72
02EA E0E0 LDI R30,0
02EB 075E CPC R21,R30
02EC F409 BNE 0x02EE
02ED C05A RJMP 0x0348
02EE 3744 CPI R20,0x74
02EF E0E0 LDI R30,0
02F0 075E CPC R21,R30
02F1 F409 BNE 0x02F3
02F2 C058 RJMP 0x034B
02F3 3741 CPI R20,0x71
02F4 E0E0 LDI R30,0
02F5 075E CPC R21,R30
02F6 F40C BGE 0x02F8
02F7 C068 RJMP 0x0360
02F8 3749 CPI R20,0x79
02F9 E0E0 LDI R30,0
02FA 075E CPC R21,R30
02FB F409 BNE 0x02FD
02FC C054 RJMP 0x0351
02FD C062 RJMP 0x0360
(0158) {
(0159) case '0' : chr1=0; break;
02FE 24AA CLR R10
02FF C062 RJMP 0x0362
(0160) case '1' : chr1=1; break;
0300 24AA CLR R10
0301 94A3 INC R10
0302 C05F RJMP 0x0362
(0161) case '2' : chr1=2; break;
0303 E082 LDI R24,2
0304 2EA8 MOV R10,R24
0305 C05C RJMP 0x0362
(0162) case '3' : chr1=3; break;
0306 E083 LDI R24,3
0307 2EA8 MOV R10,R24
0308 C059 RJMP 0x0362
(0163) case '4' : chr1=4; break;
0309 E084 LDI R24,4
030A 2EA8 MOV R10,R24
030B C056 RJMP 0x0362
(0164) case '5' : chr1=5; break;
030C E085 LDI R24,5
030D 2EA8 MOV R10,R24
030E C053 RJMP 0x0362
(0165) case '6' : chr1=6; break;
030F E086 LDI R24,6
0310 2EA8 MOV R10,R24
0311 C050 RJMP 0x0362
(0166) case '7' : chr1=7; break;
0312 E087 LDI R24,7
0313 2EA8 MOV R10,R24
0314 C04D RJMP 0x0362
(0167) case '8' : chr1=8; break;
0315 E088 LDI R24,0x8
0316 2EA8 MOV R10,R24
0317 C04A RJMP 0x0362
(0168) case '9' : chr1=9; break;
0318 E089 LDI R24,0x9
0319 2EA8 MOV R10,R24
031A C047 RJMP 0x0362
(0169) case ' ' : chr1=31; break;
031B E18F LDI R24,0x1F
031C 2EA8 MOV R10,R24
031D C044 RJMP 0x0362
(0170) case 'A' : chr1=10; break;
031E E08A LDI R24,0xA
031F 2EA8 MOV R10,R24
0320 C041 RJMP 0x0362
(0171) case 'b' : chr1=11; break;
0321 E08B LDI R24,0xB
0322 2EA8 MOV R10,R24
0323 C03E RJMP 0x0362
(0172) case 'C' : chr1=12; break;
0324 E08C LDI R24,0xC
0325 2EA8 MOV R10,R24
0326 C03B RJMP 0x0362
(0173) case 'd' : chr1=13; break;
0327 E08D LDI R24,0xD
0328 2EA8 MOV R10,R24
0329 C038 RJMP 0x0362
(0174) case 'E' : chr1=14; break;
032A E08E LDI R24,0xE
032B 2EA8 MOV R10,R24
032C C035 RJMP 0x0362
(0175) case 'F' : chr1=15; break;
032D E08F LDI R24,0xF
032E 2EA8 MOV R10,R24
032F C032 RJMP 0x0362
(0176) case 'G' : chr1=16; break;
0330 E180 LDI R24,0x10
0331 2EA8 MOV R10,R24
0332 C02F RJMP 0x0362
(0177) case 'H' : chr1=17; break;
0333 E181 LDI R24,0x11
0334 2EA8 MOV R10,R24
0335 C02C RJMP 0x0362
(0178) case 'i' : chr1=18; break;
0336 E182 LDI R24,0x12
0337 2EA8 MOV R10,R24
0338 C029 RJMP 0x0362
(0179) case 'J' : chr1=19; break;
0339 E183 LDI R24,0x13
033A 2EA8 MOV R10,R24
033B C026 RJMP 0x0362
(0180) case 'L' : chr1=20; break;
033C E184 LDI R24,0x14
033D 2EA8 MOV R10,R24
033E C023 RJMP 0x0362
(0181) case 'O' : chr1=21; break;
033F E185 LDI R24,0x15
0340 2EA8 MOV R10,R24
0341 C020 RJMP 0x0362
(0182) case 'P' : chr1=22; break;
0342 E186 LDI R24,0x16
0343 2EA8 MOV R10,R24
0344 C01D RJMP 0x0362
(0183) case 'q' : chr1=23; break;
0345 E187 LDI R24,0x17
0346 2EA8 MOV R10,R24
0347 C01A RJMP 0x0362
(0184) case 'r' : chr1=24; break;
0348 E188 LDI R24,0x18
0349 2EA8 MOV R10,R24
034A C017 RJMP 0x0362
(0185) case 't' : chr1=25; break;
034B E189 LDI R24,0x19
034C 2EA8 MOV R10,R24
034D C014 RJMP 0x0362
(0186) case 'U' : chr1=26; break;
034E E18A LDI R24,0x1A
034F 2EA8 MOV R10,R24
0350 C011 RJMP 0x0362
(0187) case 'y' : chr1=27; break;
0351 E18B LDI R24,0x1B
0352 2EA8 MOV R10,R24
0353 C00E RJMP 0x0362
(0188) case 'c' : chr1=28; break;
0354 E18C LDI R24,0x1C
0355 2EA8 MOV R10,R24
0356 C00B RJMP 0x0362
(0189) case 'h' : chr1=29; break;
0357 E18D LDI R24,0x1D
0358 2EA8 MOV R10,R24
0359 C008 RJMP 0x0362
(0190) case 'T' : chr1=30; break;
035A E18E LDI R24,0x1E
035B 2EA8 MOV R10,R24
035C C005 RJMP 0x0362
(0191) case '.' : chr1=128; break;
035D E880 LDI R24,0x80
035E 2EA8 MOV R10,R24
035F C002 RJMP 0x0362
(0192) default : chr1=31;
0360 E18F LDI R24,0x1F
0361 2EA8 MOV R10,R24
(0193) }
(0194)
(0195) tmp++;
0362 858B LDD R24,Y+11
0363 859C LDD R25,Y+12
0364 9601 ADIW R24,1
0365 879C STD Y+12,R25
0366 878B STD Y+11,R24
(0196) chr2=*tmp;
0367 01FC MOVW R30,R24
0368 80C0 LDD R12,Z+0
(0197) if (chr2=='.')
0369 2D8C MOV R24,R12
036A 328E CPI R24,0x2E
036B F439 BNE 0x0373
(0198) {
(0199) chr1=chr1+128;
036C 2D8A MOV R24,R10
036D 5880 SUBI R24,0x80
036E 2EA8 MOV R10,R24
(0200) tmp++;
036F 01CF MOVW R24,R30
0370 9601 ADIW R24,1
0371 879C STD Y+12,R25
0372 878B STD Y+11,R24
(0201) }
(0202) ZLG7290_SendCmd(chr,chr1);
0373 2D2A MOV R18,R10
0374 2D0E MOV R16,R14
0375 DECF RCALL _ZLG7290_SendCmd
0376 9563 INC R22
0377 8008 LDD R0,Y+0
0378 1560 CP R22,R0
0379 F408 BCC 0x037B
037A CF20 RJMP 0x029B
037B 9621 ADIW R28,1
037C 940E0FB0 CALL pop_gset5
037E 9622 ADIW R28,2
037F 9508 RET
FILE: D:\gmj_1\main.c
(0001) //ICC-AVR application builder : 2004-8-22 19:49:01
(0002) // Target : M16
(0003) // Crystal: 16.000Mhz
(0004) //本程序所用的长度单位为毫米,时间单位为8个时钟周期(千万分之五秒)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) #include <h_iic.c>
(0008) #include <eeprom.h>
(0009) /////////////// 键盘定义
(0010) #define START_K 1
(0011) //启动
(0012) #define ENTER 1
(0013) //确定
(0014) #define STOP 5
(0015) //停止
(0016) #define RETURN 5
(0017) //返回
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -