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

📄 display.s

📁 用ICC编写的程序包括SPI
💻 S
字号:
	.module Display.c
	.area text(rom, con, rel)
	.dbfile F:\IccAvr_Pro\Display.c
	.dbfunc e display _display fV
;    DispContent -> R20,R21
;              i -> R22
;           gate -> R10
;        content -> R12,R13
	.even
_display::
	xcall push_gset5
	mov R10,R18
	movw R12,R16
	.dbline -1
	.dbline 7
; #include <iom16v.h>
; #include <macros.h>
; 
; #include "Display.h"
; 
; void display(unsigned int content,unsigned char gate)
; {	 
	.dbline 8
; 	unsigned int DispContent=0;
	clr R20
	clr R21
	.dbline 10
; 	unsigned char i;
; 	for(i=0;i<4;i++)		   			   			 //gain the BCD code of the number
	clr R22
	xjmp L5
L2:
	.dbline 11
	.dbline 12
	movw R2,R20
	lsr R3
	ror R2
	lsr R3
	ror R2
	lsr R3
	ror R2
	lsr R3
	ror R2
	movw R20,R2
	.dbline 13
	ldi R18,10
	ldi R19,0
	movw R16,R12
	xcall mod16u
	ldi R18,12
	ldi R19,0
	xcall lsl16
	or R20,R16
	or R21,R17
	.dbline 14
	ldi R18,10
	ldi R19,0
	movw R16,R12
	xcall div16u
	movw R12,R16
	.dbline 15
L3:
	.dbline 10
	inc R22
L5:
	.dbline 10
	cpi R22,4
	brlo L2
	.dbline 17
; 		{
; 		 DispContent>>=4;
; 		 DispContent|=(content%10)<<12;
; 		 content=content/10;
; 		 }
; 	
; 	 switch(gate)
	mov R14,R10
	clr R15
	tst R14
	brne X0
	tst R15
	breq L9
X0:
	movw R24,R14
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L10
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L11
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L12
	xjmp L6
X1:
	.dbline 18
; 	 	{
L9:
	.dbline 19
; 		case 0: PORTB&=~BIT(Gate0);break;	  		 //Open the gate 
	cbi 0x18,4
	.dbline 19
	xjmp L7
L10:
	.dbline 20
; 		case 1: PORTB&=~BIT(Gate1);break;
	cbi 0x18,5
	.dbline 20
	xjmp L7
L11:
	.dbline 21
; 		case 2: PORTB&=~BIT(Gate2);break;
	cbi 0x18,6
	.dbline 21
	xjmp L7
L12:
	.dbline 22
; 		case 3: PORTB&=~BIT(Gate3);break;
	cbi 0x18,7
	.dbline 22
	xjmp L7
L6:
	.dbline 23
; 		default:  PORTB|=0xF0;break;
	in R24,0x18
	ori R24,240
	out 0x18,R24
	.dbline 23
L7:
	.dbline 25
; 		}
; 		for (i=0;i<=15;i++)				 			 //Send the number by serial
	clr R22
	xjmp L16
L13:
	.dbline 26
; 			{
	.dbline 27
; 			 PORTC|=BIT(DispClk);
	sbi 0x15,6
	.dbline 28
; 			 NOP();
	nop
	.dbline 29
; 			 NOP();
	nop
	.dbline 30
; 			 if(DispContent&0x01)
	sbrs R20,0
	rjmp L17
	.dbline 31
; 				 PORTC|=BIT(DispData);
	sbi 0x15,7
	xjmp L18
L17:
	.dbline 33
; 			 else
; 			 	 PORTC&=~BIT(DispData);
	cbi 0x15,7
L18:
	.dbline 34
	nop
	.dbline 35
	nop
	.dbline 36
	nop
	.dbline 37
	nop
	.dbline 38
	clc
	.dbline 39
	lsr R21
	ror R20
	.dbline 40
	cbi 0x15,6
	.dbline 41
L14:
	.dbline 25
	inc R22
L16:
	.dbline 25
	ldi R24,15
	cp R24,R22
	brsh L13
	.dbline 42
; 			 NOP();
; 			 NOP();
; 			 NOP();
; 			 NOP();
; 			 asm("clc");
; 			 DispContent>>=1;
; 			 PORTC&=~BIT(DispClk);
; 			 }
; 		PORTB|=0xF0;
	in R24,0x18
	ori R24,240
	out 0x18,R24
	.dbline -2
	.dbline 43
; }	 
L1:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r DispContent 20 i
	.dbsym r i 22 c
	.dbsym r gate 10 c
	.dbsym r content 12 i
	.dbend
	.dbfunc e disp_init _disp_init fV
	.even
_disp_init::
	.dbline -1
	.dbline 46
; 
; void disp_init(void)			  	   				 //Set all control signal high
; {
	.dbline 47
;  	 DDRB|=0xFF;
	in R24,0x17
	ori R24,255
	out 0x17,R24
	.dbline 48
; 	 PORTB|=0xF0;
	in R24,0x18
	ori R24,240
	out 0x18,R24
	.dbline 49
; 	 PORTC|=BIT(DispData)|BIT(DispClk);
	in R24,0x15
	ori R24,192
	out 0x15,R24
	.dbline 50
; 	 DDRC|=BIT(DispData)|BIT(DispClk);
	in R24,0x14
	ori R24,192
	out 0x14,R24
	.dbline -2
	.dbline 51
; }
L19:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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