语音.lst
来自「ISD1720芯片实现录音,定点录音,播放,定点播放等.」· LST 代码 · 共 787 行 · 第 1/2 页
LST
787 行
(0188) if(x==1) p=0x90;//第二行
3DE 3061 CPI R22,1
3DF F409 BNE 0x03E1
3E0 E940 LDI R20,0x90
(0189) if(x==2) p=0x88;//第三行
3E1 3062 CPI R22,2
3E2 F409 BNE 0x03E4
3E3 E848 LDI R20,0x88
(0190) if(x==3) p=0x98;//第四行
3E4 3063 CPI R22,3
3E5 F409 BNE 0x03E7
3E6 E948 LDI R20,0x98
(0191) p+=y;//再加上y列
3E7 0D4A ADD R20,R10
(0192) writecomd(p) ;
3E8 2F04 MOV R16,R20
3E9 DFC7 RCALL _writecomd
(0193) delayms(1);
3EA E001 LDI R16,1
3EB E010 LDI R17,0
3EC DF75 RCALL _delayms
3ED 940C 04D9 JMP pop_xgsetF00C
_zhiti:
data --> R20
3EF 934A ST R20,-Y
3F0 935A ST R21,-Y
3F1 01A8 MOVW R20,R16
(0194) }
(0195) //****************************************************
(0196) /*写入字体*/
(0197) //**************************************************
(0198) void zhiti(uchar *data)
(0199) {
3F2 C008 RJMP 0x03FB
(0200)
(0201) while(*data!='\0')
(0202) {
(0203) writedata(*data);
3F3 01FA MOVW R30,R20
3F4 8100 LDD R16,Z+0
3F5 DFCE RCALL _writedata
(0204) delayms(100);
3F6 E604 LDI R16,0x64
3F7 E010 LDI R17,0
3F8 DF69 RCALL _delayms
(0205) data++;
3F9 5F4F SUBI R20,0xFF
3FA 4F5F SBCI R21,0xFF
3FB 01FA MOVW R30,R20
3FC 8020 LDD R2,Z+0
3FD 2022 TST R2
3FE F7A1 BNE 0x03F3
3FF 9159 LD R21,Y+
400 9149 LD R20,Y+
401 9508 RET
(0206) }
(0207) }
(0208) //********************************************************
(0209) /*基本指令初始化*/
(0210) //*******************************************************
(0211) void frist1()
(0212) {
(0213) writecomd(0x01);//清屏显示
_frist1:
402 E001 LDI R16,1
403 DFAD RCALL _writecomd
(0214) writecomd(0x30);//8位并口,基本指令
404 E300 LDI R16,0x30
405 DFAB RCALL _writecomd
(0215) delayus(10);
406 E00A LDI R16,0xA
407 E010 LDI R17,0
408 DF6E RCALL _delayus
(0216) writecomd(0x0c);//整体显示,无游标,无反百,
409 E00C LDI R16,0xC
40A DFA6 RCALL _writecomd
(0217) delayus(10);
40B E00A LDI R16,0xA
40C E010 LDI R17,0
40D DF69 RCALL _delayus
(0218) writecomd(0x02);//地址归位
40E E002 LDI R16,2
40F DFA1 RCALL _writecomd
(0219) delayus(10);
410 E00A LDI R16,0xA
411 E010 LDI R17,0
412 DF64 RCALL _delayus
(0220) writecomd(0x40);//设置CGRAM地址
413 E400 LDI R16,0x40
414 DF9C RCALL _writecomd
415 9508 RET
(0221)
(0222) }
(0223) //*****************************************************
(0224) /*扩充指令*/
(0225) //*****************************************************
(0226) void frist2()
(0227) {
(0228) writecomd(0x01);//清屏显示
_frist2:
416 E001 LDI R16,1
417 DF99 RCALL _writecomd
(0229) delayus(10);
418 E00A LDI R16,0xA
419 E010 LDI R17,0
41A DF5C RCALL _delayus
(0230) writecomd(0x36);//8位控制,扩充指令,绘图开
41B E306 LDI R16,0x36
41C DF94 RCALL _writecomd
(0231) delayms(10);
41D E00A LDI R16,0xA
41E E010 LDI R17,0
41F DF42 RCALL _delayms
420 9508 RET
_drwa:
k --> R22
temp_y --> R10
temp_x --> Y,+0
i --> R12
j --> R20
data --> Y,+11
421 931A ST R17,-Y
422 930A ST R16,-Y
423 940E 04B3 CALL push_xgsetF0FC
425 9721 SBIW R28,1
(0232) }
(0233) //*****************************************************
(0234) /*绘图程序,整页显示*/
(0235) //*****************************************************
(0236) void drwa(const uchar *data)
(0237) {
(0238) uchar i,j,k,temp_x,temp_y;
(0239) temp_x=0x80;
426 E880 LDI R24,0x80
427 8388 STD Y+0,R24
(0240) temp_y=0x80;
428 2EA8 MOV R10,R24
(0241) for(i=0;i<32;i++)
429 24CC CLR R12
42A C017 RJMP 0x0442
(0242) {
(0243) writecomd(temp_y++);
42B 2C2A MOV R2,R10
42C 2D82 MOV R24,R2
42D 5F8F SUBI R24,0xFF
42E 2EA8 MOV R10,R24
42F 2D02 MOV R16,R2
430 DF80 RCALL _writecomd
(0244) writecomd(temp_x);
431 8108 LDD R16,Y+0
432 DF7E RCALL _writecomd
(0245) for(j=0;j<16;j++)
433 2744 CLR R20
434 C00A RJMP 0x043F
(0246) {
(0247) writedata(*data);
435 85EB LDD R30,Y+11
436 85FC LDD R31,Y+12
437 9104 LPM R16,12(Z)
438 DF8B RCALL _writedata
(0248) data++;
439 858B LDD R24,Y+11
43A 859C LDD R25,Y+12
43B 9601 ADIW R24,1
43C 879C STD Y+12,R25
43D 878B STD Y+11,R24
43E 9543 INC R20
43F 3140 CPI R20,0x10
440 F3A0 BCS 0x0435
441 94C3 INC R12
442 2D8C MOV R24,R12
443 3280 CPI R24,0x20
444 F330 BCS 0x042B
(0249) }
(0250) }
(0251) temp_x=0x88;
445 E888 LDI R24,0x88
446 8388 STD Y+0,R24
(0252) temp_y=0x80;
447 E880 LDI R24,0x80
448 2EA8 MOV R10,R24
(0253) for(i=0;i<32;i++)
449 24CC CLR R12
44A C017 RJMP 0x0462
(0254) {
(0255) writecomd(temp_y++);
44B 2C2A MOV R2,R10
44C 2D82 MOV R24,R2
44D 5F8F SUBI R24,0xFF
44E 2EA8 MOV R10,R24
44F 2D02 MOV R16,R2
450 DF60 RCALL _writecomd
(0256) writecomd(temp_x);
451 8108 LDD R16,Y+0
452 DF5E RCALL _writecomd
(0257) for(j=0;j<16;j++)
453 2744 CLR R20
454 C00A RJMP 0x045F
(0258) {
(0259) writedata(*data);
455 85EB LDD R30,Y+11
456 85FC LDD R31,Y+12
457 9104 LPM R16,12(Z)
458 DF6B RCALL _writedata
(0260) data++;
459 858B LDD R24,Y+11
45A 859C LDD R25,Y+12
45B 9601 ADIW R24,1
45C 879C STD Y+12,R25
45D 878B STD Y+11,R24
45E 9543 INC R20
45F 3140 CPI R20,0x10
460 F3A0 BCS 0x0455
461 94C3 INC R12
462 2D8C MOV R24,R12
463 3280 CPI R24,0x20
464 F330 BCS 0x044B
(0261) }
(0262) }
(0263) for(k=0;k<11;k++) ////下面程序是为了实现动画的
465 2766 CLR R22
466 C024 RJMP 0x048B
(0264) {
(0265) temp_x=0x98;
467 E988 LDI R24,0x98
468 8388 STD Y+0,R24
(0266) temp_y=0x9B;
469 E98B LDI R24,0x9B
46A 2EA8 MOV R10,R24
(0267) for(i=0;i<3;i++)
46B 24CC CLR R12
46C C017 RJMP 0x0484
(0268) {
(0269) writecomd(temp_y++);
46D 2CEA MOV R14,R10
46E 2D8E MOV R24,R14
46F 5F8F SUBI R24,0xFF
470 2EA8 MOV R10,R24
471 2D0E MOV R16,R14
472 DF3E RCALL _writecomd
(0270) writecomd(temp_x);
473 8108 LDD R16,Y+0
474 DF3C RCALL _writecomd
(0271) for(j=0;j<16;j++)
475 2744 CLR R20
476 C00A RJMP 0x0481
(0272) {
(0273) writedata(*data);
477 85EB LDD R30,Y+11
478 85FC LDD R31,Y+12
479 9104 LPM R16,12(Z)
47A DF49 RCALL _writedata
(0274) data++;
47B 858B LDD R24,Y+11
47C 859C LDD R25,Y+12
47D 9601 ADIW R24,1
47E 879C STD Y+12,R25
47F 878B STD Y+11,R24
480 9543 INC R20
481 3140 CPI R20,0x10
482 F3A0 BCS 0x0477
483 94C3 INC R12
484 2D8C MOV R24,R12
485 3083 CPI R24,3
486 F330 BCS 0x046D
(0275) }
(0276) }
(0277) delayms(100);
487 E604 LDI R16,0x64
488 E010 LDI R17,0
489 DED8 RCALL _delayms
48A 9563 INC R22
48B 306B CPI R22,0xB
48C F2D0 BCS 0x0467
48D 9621 ADIW R28,1
48E 940E 04A8 CALL pop_xgsetF0FC
490 9622 ADIW R28,2
491 9508 RET
(0278) }
(0279) }
(0280) /*********************************************
(0281) 开机画面
(0282) ***********************************************/
(0283) void kaiji(void)
(0284) {
(0285) frist2();
_kaiji:
492 DF83 RCALL _frist2
(0286) drwa(data00);
493 E504 LDI R16,0x54
494 E010 LDI R17,0
495 DF8B RCALL _drwa
(0287) frist1();
496 DF6B RCALL _frist1
(0288) writecomd(0x01);//清屏显示
497 E001 LDI R16,1
498 DF18 RCALL _writecomd
(0289) wezhi(1,2);
499 E022 LDI R18,2
49A E001 LDI R16,1
49B DF3B RCALL _wezhi
(0290) zhiti(data01);
49C E600 LDI R16,0x60
49D E010 LDI R17,0
49E DF50 RCALL _zhiti
(0291) wezhi(2,0);
49F 2722 CLR R18
4A0 E002 LDI R16,2
4A1 DF35 RCALL _wezhi
(0292) zhiti(data02);
4A2 E609 LDI R16,0x69
4A3 E010 LDI R17,0
4A4 DF4A RCALL _zhiti
4A5 9508 RET
FILE: E:\写的程序\AVR(C)\语音.c
(0001) #include "12864显示.c"
(0002) //#include"延时子程序.c"
(0003) //#include"4X4键盘.c"
(0004) void main()
(0005) {
(0006) kaiji();
FILE: <library>
_main:
4A6 DFEB RCALL _kaiji
4A7 9508 RET
pop_xgsetF0FC:
4A8 90A9 LD R10,Y+
4A9 90B9 LD R11,Y+
4AA 90C9 LD R12,Y+
4AB 90D9 LD R13,Y+
4AC 90E9 LD R14,Y+
4AD 90F9 LD R15,Y+
4AE 9149 LD R20,Y+
4AF 9159 LD R21,Y+
4B0 9169 LD R22,Y+
4B1 9179 LD R23,Y+
4B2 9508 RET
push_xgsetF0FC:
4B3 937A ST R23,-Y
4B4 936A ST R22,-Y
push_xgset30FC:
4B5 935A ST R21,-Y
4B6 934A ST R20,-Y
push_xgset00FC:
4B7 92FA ST R15,-Y
4B8 92EA ST R14,-Y
push_xgset003C:
4B9 92DA ST R13,-Y
4BA 92CA ST R12,-Y
4BB 92BA ST R11,-Y
4BC 92AA ST R10,-Y
4BD 9508 RET
push_xgset300C:
4BE 935A ST R21,-Y
4BF 934A ST R20,-Y
4C0 92BA ST R11,-Y
4C1 92AA ST R10,-Y
4C2 9508 RET
pop_xgset300C:
4C3 90A9 LD R10,Y+
4C4 90B9 LD R11,Y+
4C5 9149 LD R20,Y+
4C6 9159 LD R21,Y+
4C7 9508 RET
push_xgsetF000:
4C8 937A ST R23,-Y
4C9 936A ST R22,-Y
4CA 935A ST R21,-Y
4CB 934A ST R20,-Y
4CC 9508 RET
pop_xgsetF000:
4CD 9149 LD R20,Y+
4CE 9159 LD R21,Y+
4CF 9169 LD R22,Y+
4D0 9179 LD R23,Y+
4D1 9508 RET
push_xgsetF00C:
4D2 937A ST R23,-Y
4D3 936A ST R22,-Y
4D4 935A ST R21,-Y
4D5 934A ST R20,-Y
4D6 92BA ST R11,-Y
4D7 92AA ST R10,-Y
4D8 9508 RET
pop_xgsetF00C:
4D9 90A9 LD R10,Y+
4DA 90B9 LD R11,Y+
4DB 9149 LD R20,Y+
4DC 9159 LD R21,Y+
4DD 9169 LD R22,Y+
4DE 9179 LD R23,Y+
4DF 9508 RET
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?