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

📄 test.s

📁 ZLG7289测试程序
💻 S
字号:
	.module Test.c
	.area text(rom, con, rel)
	.dbfile F:\单片机编程\ICCAVR\7289prog\Test.c
	.dbfunc e SETB _SETB fV
;              k -> R20
	.even
_SETB::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 8
; #include <iom16v.h>
; #define CS 0 
; #define CLK 1 
; #define DIO 2 
; #define KEY 3 
; 
; void SETB(unsigned char k)
; {//这里的PORTB根据自己的程序修改
	.dbline 9
;   PORTB=PORTB|(1<<k);
	ldi R16,1
	mov R17,R20
	xcall lsl8
	in R2,0x18
	or R2,R16
	out 0x18,R2
	.dbline -2
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r k 20 c
	.dbend
	.dbfunc e CLRS _CLRS fV
;              l -> R20
	.even
_CLRS::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 13
; }
; 
; void CLRS(unsigned char l)
; {//这里的PORTB根据自己的程序修改
	.dbline 14
;   PORTB=PORTB&~(1<<l);
	ldi R16,1
	mov R17,R20
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x18
	and R3,R2
	out 0x18,R3
	.dbline -2
L2:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r l 20 c
	.dbend
	.dbfunc e Display _Display fV
;        DataPos -> y+1
;        datanum -> R14
;         cToDIO -> R20
;         iToDIO -> R10,R11
;            num -> y+0
;      transdata -> R22,R23
;           wait -> R12
;       position -> y+14
;           Data -> y+12
	.even
_Display::
	xcall push_arg4
	xcall push_gset5
	sbiw R28,2
	.dbline -1
	.dbline 22
; }
; 
; //初始化显示时Data=0xA4,position=0xFF
; //Data为显示数据,position为数据显示位置
; //Data为10进制或16进制数,只能一位一位发送
; //position为1-8的数字
; void Display(unsigned char Data,unsigned char position)
; {
	.dbline 23
;   unsigned char DataPos=~0;
	ldi R24,255
	std y+1,R24
	.dbline 24
;   unsigned char num=~0;
	std y+0,R24
	.dbline 25
;   unsigned char wait=~0;
	mov R12,R24
	.dbline 26
;   unsigned char datanum=~0;
	.dbline 27
;   unsigned int transdata=~0;
	ldi R22,-1
	ldi R23,-1
	.dbline 28
;   unsigned int iToDIO=~0;
	ldi R24,-1
	ldi R25,-1
	movw R10,R24
	.dbline 29
;   unsigned char cToDIO=~0;
	ldi R20,255
	.dbline 30
;   DDRB=0xFF;
	out 0x17,R10
	.dbline 31
;   SETB(KEY);
	ldi R16,3
	xcall _SETB
	.dbline 32
;   SETB(CS);
	clr R16
	xcall _SETB
	.dbline 33
;   SETB(DIO);
	ldi R16,2
	xcall _SETB
	.dbline 34
;   datanum=2;
	ldi R24,2
	mov R14,R24
	.dbline 35
;   CLRS(CS);
	clr R16
	xcall _CLRS
	.dbline 36
;   if(Data!=0xA4)
	ldd R24,y+12
	cpi R24,164
	brne X1
	xjmp L4
X1:
	.dbline 37
;   {
	.dbline 38
;     DataPos=0xC8+position-1;
	ldd R24,y+14
	subi R24,56    ; addi 200
	subi R24,1
	std y+1,R24
	.dbline 39
;     transdata=DataPos;
	mov R22,R24
	clr R23
	.dbline 40
; 	transdata=transdata<<8;
	mov R23,R22
	clr R22
	.dbline 41
; 	transdata=transdata+Data;
	ldd R2,y+12
	clr R3
	add R22,R2
	adc R23,R3
	xjmp L7
L6:
	.dbline 43
;     while(datanum--)
;     {
	.dbline 44
;       wait=25;
	ldi R24,25
	mov R12,R24
L9:
	.dbline 46
	.dbline 46
	.dbline 46
L10:
	.dbline 45
;       while(wait--)
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L9
	.dbline 47
; 	  {;}
;       for(num=0;num<8;num++)
	clr R0
	std y+0,R0
	xjmp L15
L12:
	.dbline 48
;       {
	.dbline 49
;         iToDIO=transdata&0x8000;
	movw R24,R22
	andi R24,0
	andi R25,128
	movw R10,R24
	.dbline 50
;         transdata=transdata<<1;
	lsl R22
	rol R23
	.dbline 51
;         if(iToDIO==0x0000)
	cpi R24,0
	cpc R24,R25
	brne L16
X0:
	.dbline 52
;         {
	.dbline 53
;           CLRS(DIO);
	ldi R16,2
	xcall _CLRS
	.dbline 54
;         }
	xjmp L17
L16:
	.dbline 56
;         else
;         {
	.dbline 57
;           SETB(DIO);
	ldi R16,2
	xcall _SETB
	.dbline 58
;         }
L17:
	.dbline 59
;         SETB(CLK);
	ldi R16,1
	xcall _SETB
	.dbline 60
;         wait=4;
	ldi R24,4
	mov R12,R24
L18:
	.dbline 62
	.dbline 62
	.dbline 62
L19:
	.dbline 61
;         while(wait--)
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L18
	.dbline 63
; 		{;}
;         CLRS(CLK);
	ldi R16,1
	xcall _CLRS
	.dbline 64
;         wait=4;
	ldi R24,4
	mov R12,R24
L21:
	.dbline 66
	.dbline 66
	.dbline 66
L22:
	.dbline 65
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L21
	.dbline 67
L13:
	.dbline 47
	ldd R0,y+0
	inc R0
	std y+0,R0
L15:
	.dbline 47
	ldd R24,y+0
	cpi R24,8
	brlo L12
	.dbline 68
L7:
	.dbline 42
	mov R2,R14
	clr R3
	mov R24,R2
	subi R24,1
	mov R14,R24
	tst R2
	breq X2
	xjmp L6
X2:
	.dbline 69
;         while(wait--)
; 		{;}
;       }
;     }
;   }
	xjmp L5
L4:
	.dbline 71
;   else
;   {
	.dbline 72
;       wait=25;
	ldi R24,25
	mov R12,R24
L24:
	.dbline 73
L25:
	.dbline 73
;       while(wait--);
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L24
	.dbline 74
;       for(num=0;num<8;num++)
	clr R0
	std y+0,R0
	xjmp L30
L27:
	.dbline 75
;       {
	.dbline 76
;         cToDIO=Data&0x80;
	ldd R20,y+12
	andi R20,128
	.dbline 77
;         Data=Data<<1;
	ldd R2,y+12
	lsl R2
	std y+12,R2
	.dbline 78
;         if(cToDIO==0x00)
	tst R20
	brne L31
	.dbline 79
;         {
	.dbline 80
;           CLRS(DIO);
	ldi R16,2
	xcall _CLRS
	.dbline 81
;         }
	xjmp L32
L31:
	.dbline 83
;         else
;         {
	.dbline 84
;           SETB(DIO);
	ldi R16,2
	xcall _SETB
	.dbline 85
;         }
L32:
	.dbline 86
;         SETB(CLK);
	ldi R16,1
	xcall _SETB
	.dbline 87
;         wait=4;
	ldi R24,4
	mov R12,R24
L33:
	.dbline 88
L34:
	.dbline 88
;         while(wait--);
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L33
	.dbline 89
;         CLRS(CLK);
	ldi R16,1
	xcall _CLRS
	.dbline 90
;         wait=4;
	ldi R24,4
	mov R12,R24
L36:
	.dbline 91
L37:
	.dbline 91
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L36
	.dbline 92
L28:
	.dbline 74
	ldd R0,y+0
	inc R0
	std y+0,R0
L30:
	.dbline 74
	ldd R24,y+0
	cpi R24,8
	brlo L27
	.dbline 93
;         while(wait--);
;       }
;   }
L5:
	.dbline 94
;   SETB(CS);
	clr R16
	xcall _SETB
	.dbline -2
L3:
	adiw R28,2
	xcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l DataPos 1 c
	.dbsym r datanum 14 c
	.dbsym r cToDIO 20 c
	.dbsym r iToDIO 10 i
	.dbsym l num 0 c
	.dbsym r transdata 22 i
	.dbsym r wait 12 c
	.dbsym l position 14 c
	.dbsym l Data 12 c
	.dbend
	.dbfunc e main _main fV
;          count -> R20,R21
	.even
_main::
	.dbline -1
	.dbline 98
; }
; 
; void main(void)
; {
	.dbline 100
;   unsigned int count;
;   count=60000;
	ldi R20,60000
	ldi R21,234
L40:
	.dbline 101
L41:
	.dbline 101
;   while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L40
	tst R3
	brne L40
X3:
	xjmp L44
L43:
	.dbline 104
;   
;   while(1)
;   {
	.dbline 105
;     Display(0xA4,0xFF);
	ldi R18,255
	ldi R16,164
	xcall _Display
	.dbline 106
;     count=30000;
	ldi R20,30000
	ldi R21,117
L46:
	.dbline 107
L47:
	.dbline 107
;     while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L46
	tst R3
	brne L46
X4:
	.dbline 108
;     Display(8,1);
	ldi R18,1
	ldi R16,8
	xcall _Display
	.dbline 109
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L49:
	.dbline 110
L50:
	.dbline 110
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L49
	tst R3
	brne L49
X5:
	.dbline 111
;     Display(7,2);
	ldi R18,2
	ldi R16,7
	xcall _Display
	.dbline 112
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L52:
	.dbline 113
L53:
	.dbline 113
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L52
	tst R3
	brne L52
X6:
	.dbline 114
; 	Display(6,3);
	ldi R18,3
	ldi R16,6
	xcall _Display
	.dbline 115
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L55:
	.dbline 116
L56:
	.dbline 116
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L55
	tst R3
	brne L55
X7:
	.dbline 117
; 	Display(5,4);
	ldi R18,4
	ldi R16,5
	xcall _Display
	.dbline 118
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L58:
	.dbline 119
L59:
	.dbline 119
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L58
	tst R3
	brne L58
X8:
	.dbline 120
; 	Display(4,5);
	ldi R18,5
	ldi R16,4
	xcall _Display
	.dbline 121
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L61:
	.dbline 122
L62:
	.dbline 122
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L61
	tst R3
	brne L61
X9:
	.dbline 123
; 	Display(3,6);
	ldi R18,6
	ldi R16,3
	xcall _Display
	.dbline 124
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L64:
	.dbline 125
L65:
	.dbline 125
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L64
	tst R3
	brne L64
X10:
	.dbline 126
; 	Display(2,7);
	ldi R18,7
	ldi R16,2
	xcall _Display
	.dbline 127
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L67:
	.dbline 128
L68:
	.dbline 128
; 	while(count--);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L67
	tst R3
	brne L67
X11:
	.dbline 129
; 	Display(1,8);
	ldi R18,8
	ldi R16,1
	xcall _Display
	.dbline 130
; 	count=30000;
	ldi R20,30000
	ldi R21,117
L70:
	.dbline 131
L71:
	.dbline 131
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L70
	tst R3
	brne L70
X12:
	.dbline 132
L44:
	.dbline 103
	xjmp L43
X13:
	.dbline -2
L39:
	.dbline 0 ; func end
	ret
	.dbsym r count 20 i
	.dbend

⌨️ 快捷键说明

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