语音.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 + -
显示快捷键?