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

📄 feedis_flash.s

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 S
字号:
	.module feedis_flash.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_flash.c
	.dbfunc e flash_read _flash_read fV
;            num -> R20,R21
;           temp -> R22
;          temp1 -> R12
;           fors -> y+10
;         length -> R10,R11
;           page -> R20,R21
;         column -> R22
	.even
_flash_read::
	xcall push_gset4
	movw R20,R18
	mov R22,R16
	ldd R10,y+8
	ldd R11,y+9
	.dbline -1
	.dbline 4
; #include <include.h>
; uchar hantemp[32];
; void flash_read(uchar column,uint page,uint length,uchar fors)  //fors 表示是第一或者第二区段
; {
	.dbline 7
; 	uchar temp,temp1;
;     	uint num;
; 	DDRA  = 0xff;  //PORTA 变成输出口
	ldi R24,255
	out 0x1a,R24
	.dbline 9
; 	//	P1.4    ;RB置高
; 	SETBIT(PORTF, RW_4245_1);
	lds R24,98
	ori R24,1
	sts 98,R24
	.dbline 11
; 	//RW_4245_1 = 1;	//设置第一个4245方向为写
; 	CLEARBIT(PORTF, OE_4245_1);
	lds R24,98
	andi R24,251
	sts 98,R24
	.dbline 13
; 	//OE_4245_1 = 0;  //第一个4245使能输出
; 	SETBIT(PORTF, RW_4245_2 );
	lds R24,98
	ori R24,2
	sts 98,R24
	.dbline 15
; 	//RW_4245_2 = 1;	//设置第二个4245方向为写
; 	CLEARBIT(PORTF, OE_4245_2);
	lds R24,98
	andi R24,247
	sts 98,R24
	.dbline 17
; 	//OE_4245_2 = 0;	//第二个4245使能输出
; 	SETBIT(PORTE, RE_4245);
	sbi 0x3,5
	.dbline 19
; 	//RE_4245 = 1;	//RE置高
; 	CLEARBIT(PORTE, ALE_4245);
	cbi 0x3,3
	.dbline 21
; 	//ALE_4245 = 0;	//ALE置低
; 	CLEARBIT(PORTE, WE_4245);
	cbi 0x3,4
	.dbline 23
; 	//WE_4245 = 0;	//WE置低
; 	SETBIT(PORTE, CLE_4245);
	sbi 0x3,2
	.dbline 25
; 	//CLE_4245 = 1;	//CLE置高
; 	PORTA = fors;
	ldd R0,y+10
	out 0x1b,R0
	.dbline 27
; 	//P0 = fors;		//命令字,'00'从前面为读 '01'从后面读
; 	SETBIT(PORTE, WE_4245);
	sbi 0x3,4
	.dbline 29
; 	//WE_4245 = 1;	//WE置高
; 	CLEARBIT(PORTE, CLE_4245);
	cbi 0x3,2
	.dbline 31
; 	//CLE_4245 = 0;	//CLE置低
; 	SETBIT(PORTE, ALE_4245);
	sbi 0x3,3
	.dbline 33
; 	//ALE_4245 = 1;	//ALE置高
; 	CLEARBIT(PORTE, WE_4245);
	cbi 0x3,4
	.dbline 35
; 	//WE_4245 = 0;	//WE置低
; 	PORTA = column;
	out 0x1b,R22
	.dbline 37
; 	//P0 = column;		//地址0-7位
; 	SETBIT(PORTE, WE_4245);
	sbi 0x3,4
	.dbline 39
; 	//WE_4245 = 1;	//WE置高
; 	CLEARBIT(PORTE, WE_4245);
	cbi 0x3,4
	.dbline 41
; 	//WE_4245 = 0;	//WE置低
; 	temp = (uchar)((page>>1) & 0x00ff);
	movw R22,R20
	lsr R23
	ror R22
	andi R23,0
	.dbline 42
; 	PORTA = temp;
	out 0x1b,R22
	.dbline 44
; 	//P0 = temp;		//地址8-15位
; 	SETBIT(PORTE, WE_4245);
	sbi 0x3,4
	.dbline 46
; 	//WE_4245 = 1;	//WE置高
; 	CLEARBIT(PORTE, WE_4245);
	cbi 0x3,4
	.dbline 48
; 	//WE_4245 = 0;	//WE置低
; 	temp = (uchar)((page>>9) & 0x00ff); 
	ldi R18,9
	ldi R19,0
	movw R16,R20
	xcall lsr16
	mov R22,R16
	andi R23,0
	.dbline 49
; 	PORTA = temp;
	out 0x1b,R22
	.dbline 51
; 	//P0 = temp;		//地址16-23位
; 	SETBIT(PORTE, WE_4245);
	sbi 0x3,4
	.dbline 53
; 	//WE_4245 = 1;	//WE置高
; 	CLEARBIT(PORTE, ALE_4245);
	cbi 0x3,3
	.dbline 55
; 	//ALE_4245 = 0;	//ALE置低
; 	for(temp = 0;temp < 20;temp++)
	clr R22
	xjmp L6
L3:
	.dbline 56
	nop
L4:
	.dbline 55
	inc R22
L6:
	.dbline 55
	cpi R22,20
	brlo L3
	.dbline 95
; 		NOP();
; 	/*
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();
; 	_nop_();*/
; 	 
; 	CLEARBIT(PORTF, RW_4245_1);
	lds R24,98
	andi R24,254
	sts 98,R24
	.dbline 97
; 	//RW_4245_1 = 0;		//设置第一个4245方向为读l
; 	PORTA = 0XFF;
	ldi R24,255
	out 0x1b,R24
	.dbline 98
; 	DDRA  = 0x00;  //PORTA 变成输入口
	clr R2
	out 0x1a,R2
	.dbline 100
; 	//P0 = 0xff;          //清理P0口
;     for(num = 1;num <= length; num++)
	ldi R20,1
	ldi R21,0
	xjmp L10
L7:
	.dbline 101
;     {
	.dbline 102
; 		CLEARBIT(PORTE, RE_4245);
	cbi 0x3,5
	.dbline 104
; 		//RE_4245 = 0;
; 		SETBIT(PORTE, RE_4245);
	sbi 0x3,5
	.dbline 106
; 		//RE_4245 = 1;
;         	temp = PINA;
	in R22,0x19
	.dbline 107
; 	hantemp[num-1] = temp;
	ldi R24,<_hantemp
	ldi R25,>_hantemp
	movw R30,R20
	sbiw R30,1
	add R30,R24
	adc R31,R25
	std z+0,R22
	.dbline 109
; //        ramadd++;
; 		WDR();
	wdr
	.dbline 111
; 		//WDOG;
; 		if((num % 512) == 0)
	movw R24,R20
	andi R25,1
	cpi R24,0
	cpc R24,R25
	brne L11
X0:
	.dbline 112
;         	{
	.dbline 113
; 	            for(temp1 = 0;temp1 <16;temp1++ )
	clr R12
	xjmp L16
L13:
	.dbline 114
	.dbline 116
	wdr
	.dbline 117
	cbi 0x3,5
	.dbline 119
	sbi 0x3,5
	.dbline 121
L14:
	.dbline 113
	inc R12
L16:
	.dbline 113
	mov R24,R12
	cpi R24,16
	brlo L13
	.dbline 124
; 	            {
; 				//WDOG;
; 		             WDR();
; 				CLEARBIT(PORTE, RE_4245);
; 				//RE_4245 = 0;
; 				SETBIT(PORTE, RE_4245);
; 				//RE_4245 = 1;
; 	            }
; 		//		page +=2;
; 		//		column = 0x00;
; 				PORTA = 0XFF;
	ldi R24,255
	out 0x1b,R24
	.dbline 127
; 				//P0 = 0xff;
; 			            
;         	}	 
L11:
	.dbline 129
L8:
	.dbline 100
	subi R20,255  ; offset = 1
	sbci R21,255
L10:
	.dbline 100
	cp R10,R20
	cpc R11,R21
	brsh L7
	.dbline -2
L2:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r num 20 i
	.dbsym r temp 22 c
	.dbsym r temp1 12 c
	.dbsym l fors 10 c
	.dbsym r length 10 i
	.dbsym r page 20 i
	.dbsym r column 22 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\feedis_flash.c
_hantemp::
	.blkb 32
	.dbsym e hantemp _hantemp A[32:32]c

⌨️ 快捷键说明

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