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

📄 feedis_spi.s

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module feedis_spi.c
	.area data(ram, con, rel)
_voiceadd::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 7
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 14
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 21
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 28
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 36
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 43
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 51
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 59
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 67
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 75
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 84
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 92
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 100
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 108
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 116
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 124
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 132
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 140
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 148
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 153
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 157
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 162
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 167
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 172
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 177
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 182
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 187
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 192
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 197
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 202
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 207
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 212
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 217
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 222
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 227
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 235
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 243
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 251
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 259
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 267
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 275
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 284
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 293
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 301
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 304
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 308
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 312
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 316
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 320
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 324
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 328
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 332
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 336
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 340
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 342
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 344
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 346
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 349
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 352
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 355
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 357
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 360
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 362
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 365
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 368
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 372
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 376
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 380
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 384
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 388
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 392
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 396
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 400
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 404
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 408
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 412
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 416
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 420
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 424
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 428
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 432
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 436
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 440
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 444
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 448
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 452
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 456
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 460
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 464
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 468
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 472
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 476
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 480
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 484
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 489
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 494
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 499
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 504
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 508
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 513
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.word 518
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
	.dbsym e voiceadd _voiceadd A[204:102]i
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_spi.c
	.dbfunc e spi_init _spi_init fV
	.even
_spi_init::
	xcall push_gset2
	.dbline -1
	.dbline 65
; #include <include.h>
; 
; //volatile uchar countwait;
; volatile uchar ISDstatus;
; 
; /*
; 		MSB								LSB
; 0b 		7	6	5	4	3			2		1		0
; setbit	bit5-7 		bit3-4			moeny	wati_i	voice on
; 
; cleanbit				the bigest moeny	s_car	ready	voice off
; 					00	 x 
; 			the 3	01	x*10
; 		bits are used 	10	x*100
; 		store the 	11	x*1000
; 		sequence of moeny voice and when it becomes 111 ,play "thank you".
; 					
; */
; uchar ISDmoney[5];
; /*
; ISDmoney[0]	个位
; ISDmoney[1]	十位
; ISDmoney[2]	百位
; ISDmoney[3]	千位
; ISDmoney[4]	车型
; 
; */   
; extern uchar SPEAK;
; 
; //#pragma data:code
; unsigned int voiceadd[]={
; 0b000000000000,0b000000000111,0b000000001110,0b000000010101,
; 0b000000011100,0b000000100100,0b000000101011,0b000000110011,
; 0b000000111011,0b000001000011,0b000001001011,0b000001010100,
; 0b000001011100,0b000001100100,0b000001101100,0b000001110100,
; 0b000001111100,0b000010000100,0b000010001100,0b000010010100,
; 0b000010011001,0b000010011101,0b000010100010,0b000010100111,
; 0b000010101100,0b000010110001,0b000010110110,0b000010111011,
; 0b000011000000,0b000011000101,0b000011001010,0b000011001111,
; 0b000011010100,0b000011011001,0b000011011110,0b000011100011,
; 0b000011101011,0b000011110011,0b000011111011,0b000100000011,
; 0b000100001011,0b000100010011,0b000100011100,0b000100100101,
; 0b000100101101,0b000100110000,0b000100110100,0b000100111000,
; 0b000100111100,0b000101000000,0b000101000100,0b000101001000,
; 0b000101001100,0b000101010000,0b000101010100,0b000101010110,
; 0b000101011000,0b000101011010,0b000101011101,0b000101100000,
; 0b000101100011,0b000101100101,0b000101101000,0b000101101010,
; 0b000101101101,0b000101110000,0b000101110100,0b000101111000,
; 0b000101111100,0b000110000000,0b000110000100,0b000110001000,
; 0b000110001100,0b000110010000,0b000110010100,0b000110011000,
; 0b000110011100,0b000110100000,0b000110100100,0b000110101000,
; 0b000110101100,0b000110110000,0b000110110100,0b000110111000,
; 0b000110111100,0b000111000000,0b000111000100,0b000111001000,
; 0b000111001100,0b000111010000,0b000111010100,0b000111011000,
; 0b000111011100,0b000111100000,0b000111100100,0b000111101001,
; 0b000111101110,0b000111110011,0b000111111000,0b000111111100,
; 0b001000000001,0b001000000110
; };
; //#pragma data:data
; 
; /***********************************************************************
; Init the hardware for SPI communication
; ***********************************************************************/
; void spi_init(void)
; {
	.dbline 66
;   SET_MOSI();
	sbi 0x18,2
	.dbline 67
;   CLEAR_SCLK();
	cbi 0x18,1
	.dbline 68
;   SET_SS();
	sbi 0x18,0
	.dbline 72
;   //SET_SDI_TO_OUTPUT();
;   //SET_SCLK_TO_OUTPUT();
;   //SET_SDO_TO_INPUT();
;   waitms(500);
	ldi R16,244
	ldi R17,1
	ldi R18,0
	ldi R19,0
	xcall _waitms
	.dbline -2
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e spi_sendbyte _spi_sendbyte fV
;           temp -> R22
;            idx -> R20
;           data -> R16
	.even
_spi_sendbyte::
	xcall push_gset2
	.dbline -1
	.dbline 79
; }
; 
; /***********************************************************************
; Write one data byte to the SPI bus
; ***********************************************************************/
; void spi_sendbyte(unsigned char data)
; {
	.dbline 80
;   	uchar idx = 0;
	clr R20
	.dbline 81
; 	uchar temp = 0;
	clr R22
	.dbline 82
; 	CLEAR_SCLK();
	cbi 0x18,1
	.dbline 83
; 	CLEAR_MOSI();
	cbi 0x18,2
	xjmp L5
L4:
	.dbline 86
;   	
;   	while(idx < 8)
;   	{
	.dbline 87
;     		CLEAR_SCLK();
	cbi 0x18,1
	.dbline 91
; 		
; 		//waitus(100);
; 		//for(temp  = 0;temp < 130;temp++)
; 			NOP();
	nop
	.dbline 95
	sbrs R16,0
	rjmp L7
	.dbline 95
	sbi 0x18,2
	xjmp L8
L7:
	.dbline 95
; 		//	NOP();
; 		//	NOP();
; 		//	NOP();
;     		if (data & 0x1) SET_MOSI(); else CLEAR_MOSI();
	cbi 0x18,2
L8:
	.dbline 96
	lsr R16
	.dbline 98
	nop
	.dbline 99
	nop
	.dbline 100
	nop
	.dbline 101
	nop
	.dbline 103
	sbi 0x18,1
	.dbline 105
	nop
	.dbline 108
	inc R20
	.dbline 109
L5:
	.dbline 85
	cpi R20,8
	brlo L4
	.dbline -2
L3:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 22 c
	.dbsym r idx 20 c
	.dbsym r data 16 c
	.dbend
	.dbfunc e spi_sendint _spi_sendint fV
;       datatemp -> R20
;           data -> R22,R23
	.even
_spi_sendint::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 112
;     		data >>= 1;
; 		//for(temp  = 0;temp < 20;temp++)
; 			NOP();
; 		NOP();
; 		NOP();
; 		NOP();
; 		
;     		SET_SCLK();
; 		//for(temp  = 0;temp <130;temp++)
; 			NOP();
; 		
; 		//waitus(200);
; 		idx++;
;   	}
; }
; void spi_sendint(uint data)
; {
	.dbline 114
; 	uchar datatemp;
; 	datatemp = (uchar) data;
	mov R20,R22
	.dbline 115
; 	spi_sendbyte(datatemp);
	mov R16,R20
	xcall _spi_sendbyte
	.dbline 116
; 	datatemp = (uchar)(data >> 8);
	movw R20,R22
	mov R20,R21
	clr R21
	.dbline 117
; 	spi_sendbyte(datatemp);
	mov R16,R20
	xcall _spi_sendbyte
	.dbline -2
L9:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r datatemp 20 c
	.dbsym r data 22 i
	.dbend
	.dbfunc e ISDplay _ISDplay fc
;            ADD -> R20,R21
;            num -> R20
	.even
_ISDplay::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 121
; }
; 
; unsigned char ISDplay(unsigned char num)
; {
	.dbline 123
;  	uint ADD;
; 	CLEAR_SS();	//PULL DOWN THE SS PIN
	cbi 0x18,0
	.dbline 124
; 	spi_sendbyte(POWERUP);
	ldi R16,32
	xcall _spi_sendbyte
	.dbline 125
; 	SET_SS();	//pull up the ss pin
	sbi 0x18,0
	.dbline 127
; 	//waitms(10);
; 	ADD = PLAYADD + voiceadd[num];
	ldi R24,2
	mul R24,R20
	movw R30,R0
	ldi R24,<_voiceadd
	ldi R25,>_voiceadd
	add R30,R24
	adc R31,R25
	ldd R20,z+0
	ldd R21,z+1
	subi R20,0  ; offset = 57344
	sbci R21,32
	.dbline 128
; 	CLEAR_SS();	//PULL DOWN THE SS PIN
	cbi 0x18,0
	.dbline 129
; 	spi_sendint(ADD);
	movw R16,R20
	xcall _spi_sendint
	.dbline 130
; 	SET_SS();	//pull up the ss pin
	sbi 0x18,0
	.dbline 135

⌨️ 快捷键说明

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