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

📄 测试.s

📁 ISD1720芯片实现录音,定点录音,播放,定点播放等.
💻 S
📖 第 1 页 / 共 5 页
字号:
;  p+=y;//再加上y列
	add R20,R10
	.dbline 192
;  writecomd(p) ;
	mov R16,R20
	xcall _writecomd
	.dbline 193
;  delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L30:
	.dbline 0 ; func end
	xjmp pop_xgsetF00C
	.dbsym r p 20 c
	.dbsym r y 10 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e zhiti _zhiti fV
;           data -> R20,R21
	.even
_zhiti::
	st -y,R20
	st -y,R21
	movw R20,R16
	.dbline -1
	.dbline 199
; }
; //****************************************************
; /*写入字体*/
; //**************************************************
; void zhiti(uchar *data)
; {
	xjmp L41
L40:
	.dbline 202
;  
;  while(*data!='\0')
;   {
	.dbline 203
;    writedata(*data);
	movw R30,R20
	ldd R16,z+0
	xcall _writedata
	.dbline 204
;    delay_ms(5);
	ldi R16,5
	ldi R17,0
	xcall _delay_ms
	.dbline 205
;    data++;
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 206
;   }
L41:
	.dbline 201
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L40
X10:
	.dbline -2
L39:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r data 20 pc
	.dbend
	.dbfunc e frist1 _frist1 fV
	.even
_frist1::
	.dbline -1
	.dbline 212
; }
; //********************************************************
; /*基本指令初始化*/
; //*******************************************************
; void frist1()
; {
	.dbline 213
;  writecomd(0x01);//清屏显示
	ldi R16,1
	xcall _writecomd
	.dbline 214
;  writecomd(0x30);//8位并口,基本指令
	ldi R16,48
	xcall _writecomd
	.dbline 215
;  delay_us(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_us
	.dbline 216
;  writecomd(0x0c);//整体显示,无游标,无反百,
	ldi R16,12
	xcall _writecomd
	.dbline 217
;  delay_us(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_us
	.dbline 218
;  writecomd(0x02);//地址归位
	ldi R16,2
	xcall _writecomd
	.dbline 219
;  delay_us(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_us
	.dbline 220
;  writecomd(0x40);//设置CGRAM地址
	ldi R16,64
	xcall _writecomd
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e frist2 _frist2 fV
	.even
_frist2::
	.dbline -1
	.dbline 227
; 
; }
; //*****************************************************
; /*扩充指令*/
; //*****************************************************
; void frist2()
; {
	.dbline 228
;  writecomd(0x01);//清屏显示
	ldi R16,1
	xcall _writecomd
	.dbline 229
;  delay_us(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_us
	.dbline 230
;  writecomd(0x36);//8位控制,扩充指令,绘图开
	ldi R16,54
	xcall _writecomd
	.dbline 231
;  delay_ms(5);
	ldi R16,5
	ldi R17,0
	xcall _delay_ms
	.dbline -2
L44:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e drwa _drwa fV
;              k -> R22
;         temp_y -> R10
;         temp_x -> y+0
;              i -> R12
;              j -> R20
;           data -> y+11
	.even
_drwa::
	st -y,r17
	st -y,r16
	xcall push_xgsetF0FC
	sbiw R28,1
	.dbline -1
	.dbline 237
; }
; //*****************************************************
; /*绘图程序,整页显示*/
; //*****************************************************
; void drwa(const uchar *data) 
; {
	.dbline 239
;  uchar i,j,k,temp_x,temp_y;
;  temp_x=0x80;
	ldi R24,128
	std y+0,R24
	.dbline 240
;  temp_y=0x80;
	mov R10,R24
	.dbline 241
;  for(i=0;i<32;i++)
	clr R12
	xjmp L49
L46:
	.dbline 242
;  {
	.dbline 243
;    writecomd(temp_y++);
	mov R2,R10
	mov R24,R2
	subi R24,255    ; addi 1
	mov R10,R24
	mov R16,R2
	xcall _writecomd
	.dbline 244
;    writecomd(temp_x);
	ldd R16,y+0
	xcall _writecomd
	.dbline 245
;    for(j=0;j<16;j++)
	clr R20
	xjmp L53
L50:
	.dbline 246
;     {
	.dbline 247
; 	 writedata(*data);
	ldd R30,y+11
	ldd R31,y+12
	lpm R16,Z
	xcall _writedata
	.dbline 248
; 	 data++;
	ldd R24,y+11
	ldd R25,y+12
	adiw R24,1
	std y+12,R25
	std y+11,R24
	.dbline 249
; 	}
L51:
	.dbline 245
	inc R20
L53:
	.dbline 245
	cpi R20,16
	brlo L50
X11:
	.dbline 250
;   }
L47:
	.dbline 241
	inc R12
L49:
	.dbline 241
	mov R24,R12
	cpi R24,32
	brlo L46
X12:
	.dbline 251
;   temp_x=0x88;
	ldi R24,136
	std y+0,R24
	.dbline 252
;   temp_y=0x80;
	ldi R24,128
	mov R10,R24
	.dbline 253
;   for(i=0;i<32;i++)
	clr R12
	xjmp L57
L54:
	.dbline 254
;    {
	.dbline 255
;     writecomd(temp_y++);
	mov R2,R10
	mov R24,R2
	subi R24,255    ; addi 1
	mov R10,R24
	mov R16,R2
	xcall _writecomd
	.dbline 256
;     writecomd(temp_x);
	ldd R16,y+0
	xcall _writecomd
	.dbline 257
;     for(j=0;j<16;j++)
	clr R20
	xjmp L61
L58:
	.dbline 258
; 	 {
	.dbline 259
; 	  writedata(*data);
	ldd R30,y+11
	ldd R31,y+12
	lpm R16,Z
	xcall _writedata
	.dbline 260
; 	  data++;
	ldd R24,y+11
	ldd R25,y+12
	adiw R24,1
	std y+12,R25
	std y+11,R24
	.dbline 261
; 	 }
L59:
	.dbline 257
	inc R20
L61:
	.dbline 257
	cpi R20,16
	brlo L58
X13:
	.dbline 262
;    }
L55:
	.dbline 253
	inc R12
L57:
	.dbline 253
	mov R24,R12
	cpi R24,32
	brlo L54
X14:
	.dbline 263
;    for(k=0;k<11;k++)    ////下面程序是为了实现动画的
	clr R22
	xjmp L65
L62:
	.dbline 264
;    {
	.dbline 265
;    temp_x=0x98;
	ldi R24,152
	std y+0,R24
	.dbline 266
;    temp_y=0x9B;
	ldi R24,155
	mov R10,R24
	.dbline 267
;       for(i=0;i<3;i++)
	clr R12
	xjmp L69
L66:
	.dbline 268
;        {
	.dbline 269
;         writecomd(temp_y++);
	mov R14,R10
	mov R24,R14
	subi R24,255    ; addi 1
	mov R10,R24
	mov R16,R14
	xcall _writecomd
	.dbline 270
;         writecomd(temp_x);
	ldd R16,y+0
	xcall _writecomd
	.dbline 271
;         for(j=0;j<16;j++)
	clr R20
	xjmp L73
L70:
	.dbline 272
; 	     {
	.dbline 273
; 	      writedata(*data);
	ldd R30,y+11
	ldd R31,y+12
	lpm R16,Z
	xcall _writedata
	.dbline 274
; 	      data++;
	ldd R24,y+11
	ldd R25,y+12
	adiw R24,1
	std y+12,R25
	std y+11,R24
	.dbline 275
; 	      }
L71:
	.dbline 271
	inc R20
L73:
	.dbline 271
	cpi R20,16
	brlo L70
X15:
	.dbline 276
;        }
L67:
	.dbline 267
	inc R12
L69:
	.dbline 267
	mov R24,R12
	cpi R24,3
	brlo L66
X16:
	.dbline 277
; 	delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 278
; 	}
L63:
	.dbline 263
	inc R22
L65:
	.dbline 263
	cpi R22,11
	brlo L62
X17:
	.dbline -2
L45:
	.dbline 0 ; func end
	adiw R28,1
	xcall pop_xgsetF0FC
	adiw R28,2
	ret
	.dbsym r k 22 c
	.dbsym r temp_y 10 c
	.dbsym l temp_x 0 c
	.dbsym r i 12 c
	.dbsym r j 20 c
	.dbsym l data 11 pkc
	.dbend
	.dbfunc e kaiji _kaiji fV
	.even
_kaiji::
	.dbline -1
	.dbline 284
;  }
; /*********************************************
;                 开机画面
; ***********************************************/
; void kaiji(void)
; {
	.dbline 285
;    frist2();
	xcall _frist2
	.dbline 286
;    drwa(data00);
	ldi R16,<_data00
	ldi R17,>_data00
	xcall _drwa
	.dbline 287
;    frist1();
	xcall _frist1
	.dbline 288
;    writecomd(0x01);//清屏显示
	ldi R16,1
	xcall _writecomd
	.dbline 289
;    wezhi(1,2);
	ldi R18,2
	ldi R16,1
	xcall _wezhi
	.dbline 290
;    zhiti(data01);
	ldi R16,<_data01
	ldi R17,>_data01
	xcall _zhiti
	.dbline 291
;    wezhi(2,0);
	clr R18
	ldi R16,2
	xcall _wezhi
	.dbline 292
;    zhiti(data02);
	ldi R16,<_data02
	ldi R17,>_data02
	xcall _zhiti
	.dbline -2
L74:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfile E:\写的程序\AVR(C)\4X4键盘.c
	.dbfunc e key_scan _key_scan fc
;              j -> R10
;            key -> R20
;              i -> R22
	.even
_key_scan::
	xcall push_xgsetF00C
	.dbline -1
	.dbline 13
; /*********************************************************************
;            注意在调用时要初始化DDRA=0xff;
; 		   这最好是用中断扫描键盘,在中断里先保存以前DDRA的数值;
; 		   扫描完后再恢复以前的DDRA的值
; ***********************************************************************/
; #include <iom16v.h>
; #include <macros.h>
; //#include"延时子程序.c"
; #define  uchar unsigned char
; #define  uint  unsigned int
; 
; uchar key_scan()
; { 
	.dbline 14
;   uchar i=0X7F,key,j=0;
	ldi R22,127
	.dbline 14
	clr R10
	.dbline 15
;   delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
L76:
	.dbline 17
;  do
;  { 
	.dbline 18
;    i=(i<<1|i>>7);
	mov R2,R22
	lsr R2
	lsr R2
	lsr R2
	lsr R2
	lsr R2
	lsr R2
	lsr R2
	mov R3,R22
	lsl R3
	or R3,R2
	mov R22,R3
	.dbline 19
;    PORTD=i;
	out 0x12,R3
	.dbline 20
;    DDRD=0x0F;
	ldi R24,15
	out 0x11,R24
	.dbline 21
;    key=PIND;
	in R20,0x10
	.dbline 22
;    j=key&0xF0;
	mov R24,R20
	andi R24,240
	mov R10,R24
	.dbline 23
;    }while(j==0xF0);
L77:
	.dbline 23
	mov R24,R10
	cpi R24,240
	breq L76
X18:
	.dbline 24
;    switch(key)
	mov R22,R20
	clr R23
	cpi R22,183
	ldi R30,0
	cpc R23,R30
	brne X37
	xjmp L89
X37:
X19:
	cpi R22,187
	ldi R30,0
	cpc R23,R30
	brne X38
	xjmp L88
X38:
X20:
	cpi R22,189
	ldi R30,0
	cpc R23,R30
	brne X39
	xjmp L87
X39:
X21:
	cpi R22,190
	ldi R30,0
	cpc R23,R30
	brne X40
	xjmp L86
X40:
X22:
	ldi R24,190
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L99
X23:
L98:
	cpi R22,119
	ldi R30,0
	cpc R23,R30
	brne X41
	xjmp L85
X41:
X24:
	cpi R22,123
	ldi R30,0
	cpc R23,R30
	breq L84
X25:
	cpi R22,125
	ldi R30,0
	cpc R23,R30
	breq L83
X26:
	cpi R22,126
	ldi R30,0
	cpc R23,R30
	breq L82
X27:
	xjmp L79
L99:
	cpi R22,215
	ldi R30,0
	cpc R23,R30
	brne X42
	xjmp L93
X42:
X28:
	cpi R22,219
	ldi R30,0
	cpc R23,R30
	brne X43
	xjmp L92
X43:
X29:
	cpi R22,221
	ldi R30,0
	cpc R23,R30
	breq L91
X30:
	cpi R22,222
	ldi R30,0
	cpc R23,R30
	breq L90
X31:
	cpi R22,215
	ldi R30,0
	cpc R23,R30
	brge X44
	xjmp L79
X44:
X32:
L100:
	cpi R22,231
	ldi R30,0
	cpc R23,R30
	breq L97
X33:
	cpi R22,235
	ldi R30,0
	cpc R23,R30
	breq L96
X34:
	cpi R22,237
	ldi R30,0
	cpc R23,R30
	breq L95
X35:
	cpi R22,238
	ldi R30,0
	cpc R23,R30
	breq L94
X36:
	xjmp L79
L82:
	.dbline 25
;  { case 0x7E:key=0;break;//0
	clr R20
	.dbline 25
	xjmp L80
L83:
	.dbline 26
;    case 0x7D:key=10;break;//.
	ldi R20,10
	.dbline 26

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -