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

📄 1.s

📁 用与单片机开发,会个朋友们带来方便. 原代码驱动程序(ch451)
💻 S
字号:
	.module _1.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\新建文件夹\1.c
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 10
; #include <iom16v.h>
; #define clk   4   //pd4
; #define dat   3   //pd5
; #define load  5   //pd6
; #define load1 6   //pd7
; #define XTAL 4    //晶振频率,单位MHz
; #define uchar unsigned char
; /*******************************延时函数***********************************/
; void delay_1us(void)                 //1us延时函数
;   {
	.dbline 11
;    asm("nop");
	nop
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nus::
	rcall push_gset2
	mov R22,R16
	mov R23,R17
	.dbline -1
	.dbline 15
;   }
; 
; void delay_nus(unsigned int n)       //N us延时函数
;   {
	.dbline 16
;    unsigned int i=0;
	clr R20
	clr R21
	.dbline 17
;    for (i=0;i<n;i++)
	rjmp L6
L3:
	.dbline 18
	rcall _delay_1us
L4:
	.dbline 17
	subi R20,255  ; offset = 1
	sbci R21,255
L6:
	.dbline 17
	cp R20,R22
	cpc R21,R23
	brlo L3
	.dbline -2
L2:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 22
;    delay_1us();
;   }
; 
; void delay_1ms(void)                 //1ms延时函数
;   {
	.dbline 24
	clr R16
	clr R17
	rjmp L11
L8:
	.dbline 24
L9:
	.dbline 24
	subi R16,255  ; offset = 1
	sbci R17,255
L11:
	.dbline 24
;    unsigned int i;
;    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
	ldi R24,570
	ldi R25,2
	cp R16,R24
	cpc R17,R25
	brlo L8
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	rcall push_gset2
	mov R22,R16
	mov R23,R17
	.dbline -1
	.dbline 28
;   }
; 
; void delay_nms(unsigned int n)       //N ms延时函数
; {
	.dbline 29
;    unsigned int i=0;
	clr R20
	clr R21
	.dbline 30
;    for (i=0;i<n;i++)
	rjmp L16
L13:
	.dbline 31
	.dbline 32
	rcall _delay_1ms
	.dbline 33
L14:
	.dbline 30
	subi R20,255  ; offset = 1
	sbci R21,255
L16:
	.dbline 30
	cp R20,R22
	cpc R21,R23
	brlo L13
	.dbline -2
L12:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e write _write fV
;              i -> R10,R11
;             ch -> y+0
;              x -> y+10
	.even
_write::
	rcall push_arg4
	rcall push_gset3
	sbiw R28,4
	.dbline -1
	.dbline 38
;    {
;       delay_1ms();
;    }
; }
; /*******************************451写指令***********************************/
; 
; void  write(long  int x)
; {
	.dbline 41
;     long  int ch;
;     int  i;
;     ch = x;
	ldd R2,y+10
	ldd R3,y+11
	ldd R4,y+12
	ldd R5,y+13
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 42
;     PORTD&= ~(1<<clk);      //  CLK
	cbi 0x12,4
	.dbline 43
; 	PORTD&= ~(1<<load);
	cbi 0x12,5
	.dbline 44
;     for(i=0; i<12; i++)
	clr R10
	clr R11
L18:
	.dbline 45
; {
	.dbline 46
;         if(ch&0x001)
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	breq L22
	.dbline 47
;         {
	.dbline 48
;             PORTD|= 0x08;   //数据为1   00100000
	sbi 0x12,3
	.dbline 49
; 			ch >>= 1;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	asr R5
	ror R4
	ror R3
	ror R2
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 50
; 			PORTD&= ~(1<<clk);
	cbi 0x12,4
	.dbline 51
; 			PORTD|= (1<<clk);
	sbi 0x12,4
	.dbline 53
; 			
;         }
	rjmp L23
L22:
	.dbline 55
;         else
;         {
	.dbline 56
;             PORTD&= ~(0x08);  //数据为0
	cbi 0x12,3
	.dbline 57
; 			ch >>= 1;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	asr R5
	ror R4
	ror R3
	ror R2
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 58
; 			PORTD&= ~(1<<clk);
	cbi 0x12,4
	.dbline 59
; 			PORTD|= (1<<clk);
	sbi 0x12,4
	.dbline 61
; 			
;         }       
L23:
	.dbline 63
L19:
	.dbline 44
	mov R24,R10
	mov R25,R11
	adiw R24,1
	mov R10,R24
	mov R11,R25
	.dbline 44
	cpi R24,12
	ldi R30,0
	cpc R25,R30
	brlt L18
	.dbline 64
; 		
; 		}
; 		PORTD|= 1<<load;
	sbi 0x12,5
	.dbline -2
L17:
	adiw R28,4
	rcall pop_gset3
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r i 10 I
	.dbsym l ch 0 L
	.dbsym l x 10 L
	.dbend
	.dbfunc e write1 _write1 fV
;              i -> R10,R11
;             ch -> y+0
;              x -> y+10
	.even
_write1::
	rcall push_arg4
	rcall push_gset3
	sbiw R28,4
	.dbline -1
	.dbline 69
; 
; }
; 
; void  write1(long  int x)
; {
	.dbline 72
;     long  int ch;
;     int  i;
;     ch = x;
	ldd R2,y+10
	ldd R3,y+11
	ldd R4,y+12
	ldd R5,y+13
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 73
;     PORTD&= ~(1<<clk);      //  CLK
	cbi 0x12,4
	.dbline 74
; 	PORTD&= ~(1<<load1);
	cbi 0x12,6
	.dbline 75
;     for(i=0; i<12; i++)
	clr R10
	clr R11
L25:
	.dbline 76
; {
	.dbline 77
;         if(ch&0x001)
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	breq L29
	.dbline 78
;         {
	.dbline 79
;             PORTD|= 0x08;   //数据为1   00100000
	sbi 0x12,3
	.dbline 80
; 			ch >>= 1;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	asr R5
	ror R4
	ror R3
	ror R2
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 81
; 			PORTD&= ~(1<<clk);
	cbi 0x12,4
	.dbline 82
; 			PORTD|= (1<<clk);
	sbi 0x12,4
	.dbline 84
; 			
;         }
	rjmp L30
L29:
	.dbline 86
;         else
;         {
	.dbline 87
;             PORTD&= ~(0x08);  //数据为0
	cbi 0x12,3
	.dbline 88
; 			ch >>= 1;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	asr R5
	ror R4
	ror R3
	ror R2
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 89
; 			PORTD&= ~(1<<clk);
	cbi 0x12,4
	.dbline 90
; 			PORTD|= (1<<clk);
	sbi 0x12,4
	.dbline 92
; 			
;         }       
L30:
	.dbline 94
L26:
	.dbline 75
	mov R24,R10
	mov R25,R11
	adiw R24,1
	mov R10,R24
	mov R11,R25
	.dbline 75
	cpi R24,12
	ldi R30,0
	cpc R25,R30
	brlt L25
	.dbline 95
; 		
; 		}
; 		PORTD|= 1<<load1;
	sbi 0x12,6
	.dbline -2
L24:
	adiw R28,4
	rcall pop_gset3
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r i 10 I
	.dbsym l ch 0 L
	.dbsym l x 10 L
	.dbend
	.dbfunc e main _main fI
;              m -> R10,R11
;              n -> R10,R11
;              i -> R10,R11
	.even
_main::
	.dbline -1
	.dbline 101
; 
; }
; 
; /*******************************主函数***********************************/
; int main( void )
; {   
	.dbline 102
;     int i=0,n=0,m=0;
	clr R10
	clr R11
	.dbline 102
	.dbline 102
	.dbline 103
; 	DDRD=0xff;    //设置为输出
	ldi R24,255
	out 0x11,R24
	.dbline 104
; 	PORTD |=1<<dat;
	sbi 0x12,3
	.dbline 105
; 	PORTD &=~(1<<dat);
	cbi 0x12,3
	.dbline 106
; 	delay_nms(20);
	ldi R16,20
	ldi R17,0
	rcall _delay_nms
	.dbline 107
;     PORTD |=1<<dat;	
	sbi 0x12,3
	.dbline 108
; 	write(0x201);
	ldi R16,1
	ldi R17,2
	ldi R18,0
	ldi R19,0
	rcall _write
	.dbline 109
; 	write(0x401);
	ldi R16,1
	ldi R17,4
	ldi R18,0
	ldi R19,0
	rcall _write
	.dbline 110
; 	write(0x500);	
	ldi R16,0
	ldi R17,5
	ldi R18,0
	ldi R19,0
	rcall _write
	.dbline 111
; 	write1(0x201);
	ldi R16,1
	ldi R17,2
	ldi R18,0
	ldi R19,0
	rcall _write1
	.dbline 112
; 	write1(0x401);
	ldi R16,1
	ldi R17,4
	ldi R18,0
	ldi R19,0
	rcall _write1
	.dbline 113
; 	write1(0x500);
	ldi R16,0
	ldi R17,5
	ldi R18,0
	ldi R19,0
	rcall _write1
	rjmp L33
L32:
	.dbline 115
	.dbline 116
	ldi R16,255
	ldi R17,8
	ldi R18,0
	ldi R19,0
	rcall _write
	.dbline 117
	ldi R16,255
	ldi R17,8
	ldi R18,0
	ldi R19,0
	rcall _write1
	.dbline 118
	ldi R16,255
	ldi R17,9
	ldi R18,0
	ldi R19,0
	rcall _write1
	.dbline 119
	ldi R16,255
	ldi R17,10
	ldi R18,0
	ldi R19,0
	rcall _write1
	.dbline 120
	ldi R16,255
	ldi R17,11
	ldi R18,0
	ldi R19,0
	rcall _write1
	.dbline 121
	ldi R16,1000
	ldi R17,3
	rcall _delay_nms
	.dbline 122
L33:
	.dbline 114
	rjmp L32
X0:
	.dbline -2
L31:
	.dbline 0 ; func end
	ret
	.dbsym r m 10 I
	.dbsym r n 10 I
	.dbsym r i 10 I
	.dbend

⌨️ 快捷键说明

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