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

📄 reclama_fct3.s

📁 a ICCAVR source code for a small led matrix it uses atmega8 at 8 mhz
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R16,10
	rcall _linie_goala
	.dbline -2
L49:
	.dbline 0 ; func end
	adiw R28,13
	ld R20,y+
	ld R10,y+
	ret
	.dbsym r j 20 c
	.dbsym r img 10 c
	.dbend
	.dbfunc e afisheaza_B _afisheaza_B fV
;              j -> R20
;            img -> R10
	.even
_afisheaza_B::
	st -y,R10
	st -y,R20
	mov R10,R16
	sbiw R28,13
	.dbline -1
	.dbline 77
; 	 } 
; 
; /* **********************  */
; void afisheaza_B(uc_8 img){
	.dbline 79
; 	uc_8 j;
; 	 linie_goala(10); 	
	ldi R16,10
	rcall _linie_goala
	.dbline 80
; 			for(j=0;j<5;j++) send_octetB(zecimal_binar(fig_dec(img).c[j]));
	clr R20
	rjmp L58
L55:
	.dbline 80
	mov R18,R10
	movw R16,R28
	rcall _fig_dec
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	movw R16,R28
	subi R16,251  ; offset = 5
	sbci R17,255
	rcall _zecimal_binar
	movw R16,R28
	subi R16,251  ; offset = 5
	sbci R17,255
	rcall _send_octetB
L56:
	.dbline 80
	inc R20
L58:
	.dbline 80
	cpi R20,5
	brlo L55
X19:
	.dbline 81
; 	 linie_goala(10);
	ldi R16,10
	rcall _linie_goala
	.dbline -2
L54:
	.dbline 0 ; func end
	adiw R28,13
	ld R20,y+
	ld R10,y+
	ret
	.dbsym r j 20 c
	.dbsym r img 10 c
	.dbend
	.dbfunc e afisheaza_AB _afisheaza_AB fV
;              j -> R20
;            img -> R10
	.even
_afisheaza_AB::
	st -y,R10
	st -y,R20
	mov R10,R16
	sbiw R28,13
	.dbline -1
	.dbline 85
; 	 } 
; 
; /* **********************  */	
; void afisheaza_AB(uc_8 img){
	.dbline 87
; 	 uc_8 j;
; 	linie_goala_AB(5); 
	ldi R16,5
	rcall _linie_goala_AB
	.dbline 88
; 	for(j=0;j<5;j++) send_octetAB(zecimal_binar(fig_dec(img).c[j]));
	clr R20
	rjmp L63
L60:
	.dbline 88
	mov R18,R10
	movw R16,R28
	rcall _fig_dec
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	movw R16,R28
	subi R16,251  ; offset = 5
	sbci R17,255
	rcall _zecimal_binar
	movw R16,R28
	subi R16,251  ; offset = 5
	sbci R17,255
	rcall _send_octetAB
L61:
	.dbline 88
	inc R20
L63:
	.dbline 88
	cpi R20,5
	brlo L60
X20:
	.dbline 89
; 	linie_goala_AB(5); 							
	ldi R16,5
	rcall _linie_goala_AB
	.dbline -2
L59:
	.dbline 0 ; func end
	adiw R28,13
	ld R20,y+
	ld R10,y+
	ret
	.dbsym r j 20 c
	.dbsym r img 10 c
	.dbend
	.dbfunc e linie_goala _linie_goala fV
;              i -> R10
;              j -> R20
;              n -> R12
	.even
_linie_goala::
	rcall push_xgset303C
	mov R12,R16
	.dbline -1
	.dbline 92
; 	} 
; /* **********************  */					  
; void linie_goala(uc_8 n) {
	.dbline 94
; 		uc_8 i,j;
; 	 for(i=0;i<n;i++) { for(j=0;j<8;j++){PORTB|=(0<<PORTB1);clock();PORTB&=~(0<<PORTB1);}
	clr R10
	rjmp L68
L65:
	.dbline 94
	.dbline 94
	clr R20
	rjmp L72
L69:
	.dbline 94
	.dbline 94
	in R2,0x18
	out 0x18,R2
	.dbline 94
	rcall _clock
	.dbline 94
	in R24,0x18
	andi R24,255
	out 0x18,R24
	.dbline 94
L70:
	.dbline 94
	inc R20
L72:
	.dbline 94
	cpi R20,8
	brlo L69
X21:
	.dbline 95
; 					}
L66:
	.dbline 94
	inc R10
L68:
	.dbline 94
	cp R10,R12
	brlo L65
X22:
	.dbline -2
L64:
	.dbline 0 ; func end
	rjmp pop_xgset303C
	.dbsym r i 10 c
	.dbsym r j 20 c
	.dbsym r n 12 c
	.dbend
	.dbfunc e linie_goala_AB _linie_goala_AB fV
;              i -> R10
;              j -> R20
;              n -> R12
	.even
_linie_goala_AB::
	rcall push_xgset303C
	mov R12,R16
	.dbline -1
	.dbline 98
; 	 }	  	 
; /* **********************  */					  
; void linie_goala_AB(uc_8 n) {
	.dbline 100
; 		uc_8 i,j;
; 	 for(i=0;i<n;i++){for(j=0;j<16;j++) { PORTB|=(0<<PORTB1);clock();PORTB&=~(0<<PORTB1);}
	clr R10
	rjmp L77
L74:
	.dbline 100
	.dbline 100
	clr R20
	rjmp L81
L78:
	.dbline 100
	.dbline 100
	in R2,0x18
	out 0x18,R2
	.dbline 100
	rcall _clock
	.dbline 100
	in R24,0x18
	andi R24,255
	out 0x18,R24
	.dbline 100
L79:
	.dbline 100
	inc R20
L81:
	.dbline 100
	cpi R20,16
	brlo L78
X23:
	.dbline 101
; 	 				 }					
L75:
	.dbline 100
	inc R10
L77:
	.dbline 100
	cp R10,R12
	brlo L74
X24:
	.dbline -2
L73:
	.dbline 0 ; func end
	rjmp pop_xgset303C
	.dbsym r i 10 c
	.dbsym r j 20 c
	.dbsym r n 12 c
	.dbend
	.dbfunc e zecimal_binar _zecimal_binar fS[octet]
;           rasp -> y+0
;              k -> R20
;          numar -> R12
	.even
_zecimal_binar::
	rcall push_xgset303C
	mov R12,R18
	movw R10,R16
	sbiw R28,8
	.dbline -1
	.dbline 104
; 	 }		 
; /* **********************  */		  
; struct octet zecimal_binar (uc_8 numar){ //in loc de uc_8 era unsigned int
	.dbline 107
; 	   uc_8 k;
; 	   struct octet rasp;
; 	   for(k=0;k<8;k++){rasp.a[7-k]=numar%2;
	clr R20
	rjmp L87
L84:
	.dbline 107
	.dbline 107
	mov R2,R20
	clr R3
	ldi R30,7
	ldi R31,0
	sub R30,R2
	sbc R31,R3
	movw R24,R28
	add R30,R24
	adc R31,R25
	ldi R17,2
	mov R16,R12
	rcall mod8u
	std z+0,R16
	.dbline 108
; 	   					numar=numar/2;
	lsr R12
	.dbline 109
; 						}
L85:
	.dbline 107
	inc R20
L87:
	.dbline 107
	cpi R20,8
	brlo L84
X25:
	.dbline 110
; 		return rasp;
	movw R24,R28
	ldi R16,8
	ldi R17,0
	st -y,R11
	st -y,R10
	st -y,R25
	st -y,R24
	rcall asgnblk
	.dbline -2
L82:
	.dbline 0 ; func end
	adiw R28,8
	rjmp pop_xgset303C
	.dbsym l rasp 0 S[octet]
	.dbsym r k 20 c
	.dbsym r numar 12 c
	.dbend
	.dbfunc e init_uc _init_uc fV
	.even
_init_uc::
	.dbline -1
	.dbline 113
; 		}	
; /* **********************  */										  
; void init_uc(void){
	.dbline 114
; 	  PORTD = 0x00; //MMC card
	clr R2
	out 0x12,R2
	.dbline 115
;       DDRD  = 0xFF;
	ldi R24,255
	out 0x11,R24
	.dbline 116
; 	  PORTB = 0x00;//data1+data2+ON/OFF+CLK
	out 0x18,R2
	.dbline 117
;       DDRB  = 0xFF;
	out 0x17,R24
	.dbline -2
L88:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e clear _clear fV
;              i -> R10
;              n -> R12,R13
	.even
_clear::
	rcall push_xgset003C
	movw R12,R16
	.dbline -1
	.dbline 120
;       }
; /* **********************  */			 
; void clear(int n) {
	.dbline 122
; 	 uc_8 i;
; 	 for(i=0;i<n;i++) clock();
	clr R10
	rjmp L93
L90:
	.dbline 122
	rcall _clock
L91:
	.dbline 122
	inc R10
L93:
	.dbline 122
	mov R2,R10
	clr R3
	cp R2,R12
	cpc R3,R13
	brlt L90
X26:
	.dbline -2
L89:
	.dbline 0 ; func end
	rjmp pop_xgset003C
	.dbsym r i 10 c
	.dbsym r n 12 I
	.dbend
	.dbfunc e display _display fV
;          onoff -> R10,R11
	.even
_display::
	st -y,R10
	st -y,R11
	movw R10,R16
	.dbline -1
	.dbline 125
; 	}
; /* **********************  */		  
; void display (int onoff){
	.dbline 126
; 	 PORTB|=(1<<PORTB3);
	sbi 0x18,3
	.dbline 127
; 	 delay8_us(onoff);
	movw R16,R10
	rcall _delay8_us
	.dbline 128
; 	 PORTB&=~(1<<PORTB3);
	cbi 0x18,3
	.dbline 129
; 	 delay8_us(500); ///DE MODIFICAT PT INTENSITATEA LUMINII...SI IN COD LA SEND_OCTET...DISPLAY
	ldi R16,500
	ldi R17,1
	rcall _delay8_us
	.dbline -2
L94:
	.dbline 0 ; func end
	ld R11,y+
	ld R10,y+
	ret
	.dbsym r onoff 10 I
	.dbend
	.dbfunc e clip _clip fV
;              i -> R10
;              c -> R12
	.even
_clip::
	st -y,R10
	st -y,R12
	mov R12,R16
	.dbline -1
	.dbline 132
; 	 }  
; /* **********************  */	
; void clip (uc_8 c){
	.dbline 134
; 	 uc_8 i;
; 	 for(i=0;i<c;i++) display(100);
	clr R10
	rjmp L99
L96:
	.dbline 134
	ldi R16,100
	ldi R17,0
	rcall _display
L97:
	.dbline 134
	inc R10
L99:
	.dbline 134
	cp R10,R12
	brlo L96
X27:
	.dbline -2
L95:
	.dbline 0 ; func end
	ld R12,y+
	ld R10,y+
	ret
	.dbsym r i 10 c
	.dbsym r c 12 c
	.dbend
	.dbfunc e afisheaza_poza _afisheaza_poza fV
	.dbstruct 0 50 poza
	.dbfield 0 A A[25:25]c
	.dbfield 25 B A[25:25]c
	.dbend
;              i -> R20
;            pic -> R22,R23
	.even
_afisheaza_poza::
	rcall push_xgsetF000
	movw R22,R16
	sbiw R28,16
	.dbline -1
	.dbline 137
; 	 }	 
; /* ********************** */
; void afisheaza_poza(struct poza pic){
	.dbline 139
; 	 uc_8 i;
; 	 for(i=0;i<25;i++) send_octet_AB(zecimal_binar(pic.A[i]),zecimal_binar(pic.B[i]));
	clr R20
	rjmp L104
L101:
	.dbline 139
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	ldd R18,z+0
	movw R16,R28
	rcall _zecimal_binar
	movw R24,R22
	adiw R24,25
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	movw R16,R28
	subi R16,248  ; offset = 8
	sbci R17,255
	rcall _zecimal_binar
	movw R18,R28
	subi R18,248  ; offset = 8
	sbci R19,255
	movw R16,R28
	rcall _send_octet_AB
L102:
	.dbline 139
	inc R20
L104:
	.dbline 139
	cpi R20,25
	brlo L101
X28:
	.dbline 140
; 	 clip(100);
	ldi R16,100
	rcall _clip
	.dbline -2
L100:
	.dbline 0 ; func end
	adiw R28,16
	rjmp pop_xgsetF000
	.dbsym r i 20 c
	.dbsym r pic 22 pS[poza]
	.dbend
	.dbfunc e send_octet_AB _send_octet_AB fV
;              i -> R20
;              B -> R10,R11
;              A -> R12,R13
	.even
_send_octet_AB::
	rcall push_xgset303C
	movw R10,R18
	movw R12,R16
	.dbline -1
	.dbline 143
; 	 }
; /* ********************** */
; void send_octet_AB(struct octet A, struct octet B){
	.dbline 145
; 	 uc_8 i;
; 	for(i=0;i<8;i++) send_bitAB(B.a[i],A.a[i]);
	clr R20
	rjmp L109
L106:
	.dbline 145
	mov R30,R20
	clr R31
	add R30,R12
	adc R31,R13
	ldd R18,z+0
	mov R30,R20
	clr R31
	add R30,R10
	adc R31,R11
	ldd R16,z+0
	rcall _send_bitAB
L107:
	.dbline 145
	inc R20
L109:
	.dbline 145
	cpi R20,8
	brlo L106
X29:
	.dbline -2
L105:
	.dbline 0 ; func end
	rjmp pop_xgset303C
	.dbsym r i 20 c
	.dbsym r B 10 pS[octet]
	.dbsym r A 12 pS[octet]
	.dbend
; 	}
; 	 

⌨️ 快捷键说明

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