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

📄 feedis_spi.s

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 S
📖 第 1 页 / 共 2 页
字号:
; 	//CLEAR_SS();	//PULL DOWN THE SS PIN
; 	//spi_sendbyte(PLAYCURRENT);
; 	//SET_SS();	//pull up the ss pin
; 	
; 	return 0;
	clr R16
	.dbline -2
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ADD 20 i
	.dbsym r num 20 c
	.dbend
	.dbfunc e ISDpowerdown _ISDpowerdown fV
	.even
_ISDpowerdown::
	.dbline -1
	.dbline 139
; }
; 
; void ISDpowerdown(void)
; {
	.dbline 140
; 	CLEAR_SS();
	cbi 0x18,0
	.dbline 141
; 	spi_sendbyte(POWERDOWN);
	ldi R16,16
	xcall _spi_sendbyte
	.dbline 142
; 	SET_SS();	
	sbi 0x18,0
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
L13:
	.blkb 1
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
	.dbfunc e ISDmonitor _ISDmonitor fc
	.dbsym s temp L13 c
;          temp1 -> R20
	.even
_ISDmonitor::
	xcall push_gset1
	.dbline -1
	.dbline 145
; }
; uchar ISDmonitor(void)
; {
	.dbline 152
; 	static uchar temp ;
; 	
; 	//static uchar round ;
; 	//if(ISDstatus & 1)
; 	//{
; 	
; 		if(ISDstatus & 0x02)	//如果上一句还未讲完,不能说话
	lds R2,_ISDstatus
	sbrs R2,1
	rjmp L14
	.dbline 153
; 		{
	.dbline 156
; 				//countwait++;
; 				//if(countwait < 150)
; 				return 0;
	clr R16
	xjmp L12
L14:
	.dbline 161
; 				//countwait = 0;
; 				//ISDstatus &= ~0x02;
; 				//SPEAK = 1;
; 			}
; 		ISDstatus |= 0x02;
	lds R24,_ISDstatus
	ori R24,2
	sts _ISDstatus,R24
	.dbline 162
; 		if((ISDstatus & 0xe0) == 0xe0)
	lds R24,_ISDstatus
	andi R24,224
	cpi R24,224
	brne L16
	.dbline 163
; 		{
	.dbline 165
; 			
; 			ISDplay(34 + ISDmoney[4] );	//播放"你好,几型车"
	lds R16,_ISDmoney+4
	subi R16,222    ; addi 34
	xcall _ISDplay
	.dbline 167
; 			//ISDplay(39);	//播放"你好,几型车"
; 			ISDstatus &= 0x1f;
	lds R24,_ISDstatus
	andi R24,31
	sts _ISDstatus,R24
	.dbline 168
; 			ISDstatus |= 0xc0;
	lds R24,_ISDstatus
	ori R24,192
	sts _ISDstatus,R24
	.dbline 170
; 			
; 			return 0;
	clr R16
	xjmp L12
L16:
	.dbline 172
; 		}
; 		if((ISDstatus & 0xe0) == 0xc0)
	lds R24,_ISDstatus
	andi R24,224
	cpi R24,192
	brne L19
	.dbline 173
; 		{
	.dbline 175
; 			//ISDstatus |= 0x02;
; 			ISDplay(20);	//播放"请交"
	ldi R16,20
	xcall _ISDplay
	.dbline 176
; 			ISDstatus &= 0x1f;
	lds R24,_ISDstatus
	andi R24,31
	sts _ISDstatus,R24
	.dbline 177
; 			ISDstatus |= 0xa0;
	lds R24,_ISDstatus
	ori R24,160
	sts _ISDstatus,R24
	.dbline 179
; 			
; 			return 0;
	clr R16
	xjmp L12
L19:
	.dbline 181
; 		}
; 		if((ISDstatus & 0xe0) == 0xa0)
	lds R24,_ISDstatus
	andi R24,224
	cpi R24,160
	breq X2
	xjmp L21
X2:
	.dbline 182
; 		{
	.dbline 184
; 			uchar temp1;
; 			if(temp != 4)
	lds R24,L13
	cpi R24,4
	breq L23
	.dbline 185
; 			temp = (ISDstatus&0x18)>> 3;
	lds R24,_ISDstatus
	andi R24,24
	lsr R24
	lsr R24
	lsr R24
	sts L13,R24
L23:
	.dbline 186
; 			switch(temp)
	lds R20,L13
	clr R21
	cpi R20,0
	cpc R20,R21
	brne X3
	xjmp L61
X3:
X0:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brne X4
	xjmp L50
X4:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brne X5
	xjmp L39
X5:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L28
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X6
	xjmp L64
X6:
	xjmp L26
X1:
	.dbline 187
; 			{
L28:
	.dbline 190
; 
; 				case 3:
; 					ISDplay(ISDmoney[temp]+82);
	ldi R24,<_ISDmoney
	ldi R25,>_ISDmoney
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	subi R16,174    ; addi 82
	xcall _ISDplay
	.dbline 191
; 					temp1 = 0;
	clr R20
	xjmp L30
L29:
	.dbline 193
; 					while(temp1 < 3)
; 					{
	.dbline 194
; 						if(!ISDmoney[temp-1])
	ldi R24,<_ISDmoney-1
	ldi R25,>_ISDmoney-1
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L32
	.dbline 195
; 						{
	.dbline 197
; 							
; 							temp--;
	lds R24,L13
	subi R24,1
	sts L13,R24
	.dbline 199
; 							
; 						}
	xjmp L33
L32:
	.dbline 201
; 						else 
; 						{
	.dbline 202
; 							ISDstatus &= 0b11100111;
	lds R24,_ISDstatus
	andi R24,231
	sts _ISDstatus,R24
	.dbline 203
; 							ISDstatus += (--temp) << 3; 
	lds R24,L13
	subi R24,1
	mov R2,R24
	sts L13,R2
	lsl R2
	lsl R2
	lsl R2
	lds R3,_ISDstatus
	add R3,R2
	sts _ISDstatus,R3
	.dbline 204
; 							if((temp1 > 0) )
	clr R2
	cp R2,R20
	brlo X7
	xjmp L26
X7:
	.dbline 205
; 								temp = 4;
	ldi R24,4
	sts L13,R24
	.dbline 206
; 							break;
	xjmp L26
L33:
	.dbline 208
; 						}
; 						temp1++;
	inc R20
	.dbline 209
; 						if(temp1 == 3)
	cpi R20,3
	brne L37
	.dbline 210
; 						{
	.dbline 211
; 							ISDstatus &= 0x1f;
	lds R24,_ISDstatus
	andi R24,31
	sts _ISDstatus,R24
	.dbline 212
; 							ISDstatus |= 0x80;
	lds R24,_ISDstatus
	ori R24,128
	sts _ISDstatus,R24
	.dbline 213
; 							SPEAK = 0;
	clr R2
	sts _SPEAK,R2
	.dbline 214
; 						}
L37:
	.dbline 215
L30:
	.dbline 192
	cpi R20,3
	brsh X8
	xjmp L29
X8:
	.dbline 217
; 					}
; 					
; 					break;
	xjmp L26
L39:
	.dbline 219
; 				case 2:
; 					ISDplay(ISDmoney[temp]+73);
	ldi R24,<_ISDmoney
	ldi R25,>_ISDmoney
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	subi R16,183    ; addi 73
	xcall _ISDplay
	.dbline 220
; 					temp1 = 0;
	clr R20
	xjmp L41
L40:
	.dbline 222
; 					while(temp1 < 2)
; 					{
	.dbline 223
; 						if(!ISDmoney[temp-1])
	ldi R24,<_ISDmoney-1
	ldi R25,>_ISDmoney-1
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L43
	.dbline 224
; 						{
	.dbline 226
; 							
; 							temp--;
	lds R24,L13
	subi R24,1
	sts L13,R24
	.dbline 228
; 							
; 						}
	xjmp L44
L43:
	.dbline 230
; 						else 
; 						{
	.dbline 231
; 							ISDstatus &= 0b11100111;
	lds R24,_ISDstatus
	andi R24,231
	sts _ISDstatus,R24
	.dbline 232
; 							ISDstatus += (--temp) << 3; 
	lds R24,L13
	subi R24,1
	mov R2,R24
	sts L13,R2
	lsl R2
	lsl R2
	lsl R2
	lds R3,_ISDstatus
	add R3,R2
	sts _ISDstatus,R3
	.dbline 233
; 							if((temp1 > 0) )
	clr R2
	cp R2,R20
	brlo X9
	xjmp L26
X9:
	.dbline 234
; 								temp = 4;
	ldi R24,4
	sts L13,R24
	.dbline 235
; 							break;
	xjmp L26
L44:
	.dbline 237
; 						}
; 						temp1++;
	inc R20
	.dbline 238
; 						if(temp1 == 2)
	cpi R20,2
	brne L48
	.dbline 239
; 						{
	.dbline 240
; 							ISDstatus &= 0x1f;
	lds R24,_ISDstatus
	andi R24,31
	sts _ISDstatus,R24
	.dbline 241
; 							ISDstatus |= 0x80;
	lds R24,_ISDstatus
	ori R24,128
	sts _ISDstatus,R24
	.dbline 242
; 							SPEAK = 0;
	clr R2
	sts _SPEAK,R2
	.dbline 243
; 						}
L48:
	.dbline 245
L41:
	.dbline 221
	cpi R20,2
	brsh X10
	xjmp L40
X10:
	.dbline 246
; 							
; 					}
; 					break;
	xjmp L26
L50:
	.dbline 248
; 				case 1:
; 					ISDplay(ISDmoney[temp]+64);
	ldi R24,<_ISDmoney
	ldi R25,>_ISDmoney
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	subi R16,192    ; addi 64
	xcall _ISDplay
	.dbline 249
; 					temp1 = 0;
	clr R20
	xjmp L52
L51:
	.dbline 251
; 					while(temp1 < 1)
; 					{
	.dbline 252
; 						if(!ISDmoney[temp-1])
	ldi R24,<_ISDmoney-1
	ldi R25,>_ISDmoney-1
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L54
	.dbline 253
; 						{
	.dbline 255
; 							
; 							temp--;
	lds R24,L13
	subi R24,1
	sts L13,R24
	.dbline 257
; 							
; 						}
	xjmp L55
L54:
	.dbline 259
; 						else 
; 						{
	.dbline 260
; 							ISDstatus &= 0b11100111;
	lds R24,_ISDstatus
	andi R24,231
	sts _ISDstatus,R24
	.dbline 261
; 							ISDstatus += (--temp) << 3; 
	lds R24,L13
	subi R24,1
	mov R2,R24
	sts L13,R2
	lsl R2
	lsl R2
	lsl R2
	lds R3,_ISDstatus
	add R3,R2
	sts _ISDstatus,R3
	.dbline 262
; 							if((temp1 > 0) )
	clr R2
	cp R2,R20
	brlo X11
	xjmp L26
X11:
	.dbline 263
; 								temp = 4;
	ldi R24,4
	sts L13,R24
	.dbline 264
; 							break;
	xjmp L26
L55:
	.dbline 266
; 						}
; 						temp1++;
	inc R20
	.dbline 267
; 						if(temp1 == 1)
	cpi R20,1
	brne L59
	.dbline 268
; 						{
	.dbline 269
; 							ISDstatus &= 0x1f;
	lds R24,_ISDstatus
	andi R24,31
	sts _ISDstatus,R24
	.dbline 270
; 							ISDstatus |= 0x80;
	lds R24,_ISDstatus
	ori R24,128
	sts _ISDstatus,R24
	.dbline 271
; 							SPEAK = 0;
	clr R2
	sts _SPEAK,R2
	.dbline 272
; 						}
L59:
	.dbline 273
L52:
	.dbline 250
	cpi R20,1
	brsh X12
	xjmp L51
X12:
	.dbline 274
; 					}
; 					break;
	xjmp L26
L61:
	.dbline 276
; 				case 0:
; 					if(ISDmoney[temp])
	ldi R24,<_ISDmoney
	ldi R25,>_ISDmoney
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	breq L62
	.dbline 277
; 						ISDplay(ISDmoney[temp]+54);
	lds R30,L13
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	subi R16,202    ; addi 54
	xcall _ISDplay
	xjmp L63
L62:
	.dbline 279
; 					else
; 						ISDstatus &= 0xfd;
	lds R24,_ISDstatus
	andi R24,253
	sts _ISDstatus,R24
L63:
	.dbline 280
; 					ISDstatus &= 0x1f;
	lds R24,_ISDstatus
	andi R24,31
	sts _ISDstatus,R24
	.dbline 281
; 					ISDstatus |= 0x80;
	lds R24,_ISDstatus
	ori R24,128
	sts _ISDstatus,R24
	.dbline 282
; 					SPEAK = 0;
	clr R2
	sts _SPEAK,R2
	.dbline 283
; 					break;
	xjmp L26
L64:
	.dbline 285
; 				case 4:
; 					ISDplay(54);
	ldi R16,54
	xcall _ISDplay
	.dbline 286
; 					temp = 5;
	ldi R24,5
	sts L13,R24
	.dbline 287
; 					break;
	.dbline 289
; 				default:
; 					break;
L26:
	.dbline 294
; 			}
; 			//ISDstatus |= 0x02;
; 			
; 			//ISDstatus |= 0x02;
; 			return 0;
	clr R16
	xjmp L12
L21:
	.dbline 296
; 		}
; 		if((ISDstatus & 0xe0) == 0x80  && SPEAK)
	lds R24,_ISDstatus
	andi R24,224
	cpi R24,128
	brne L65
	lds R2,_SPEAK
	tst R2
	breq L65
	.dbline 297
; 			{
	.dbline 298
; 				ISDplay(44);	//
	ldi R16,44
	xcall _ISDplay
	.dbline 299
; 				ISDstatus &= 0xfc; 
	lds R24,_ISDstatus
	andi R24,252
	sts _ISDstatus,R24
	.dbline 301
; 				
; 			}
L65:
	.dbline 303
; 		//if(ISDstatus & 0x04)   //paly the money voice
; 		{
	.dbline 318
; 			/*if((ISDstatus & 0xe0) == 0xe0)		//play "thank you"
; 			{
; 				ISDplay(THANKYOU);
; 				ISDstatus &= 0b11111110;		//clear the bit 0,then wait for the end of this voice
; 				return 0;
; 			}
; 			temp = (ISDstatus>>3) & 0x03;
; 			ISDstatus &= 0b00000011;		//clear the bit 2-bit 7
; 			ISDstatus += temp << 2 + 3;
; 			
; 			
; 			
; 			ISDstatus |= 0b00000010;	//set the busy bit
; 			*/
; 		}
	.dbline -2
L12:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r temp1 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
_ISDmoney::
	.blkb 5
	.dbsym e ISDmoney _ISDmoney A[5:5]c
_ISDstatus::
	.blkb 1
	.dbsym e ISDstatus _ISDstatus c

⌨️ 快捷键说明

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