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

📄 zlg7290_avr.s

📁 数码管 按键芯片zlg7290的atmega128 的c语言程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 32
	.dbline 33
	ldi R24,1
	ldi R25,0
	sts _FlagINT+1,R25
	sts _FlagINT,R24
	.dbline -2
	.dbline 34
L59:
	ld R24,y+
	out 0x3f,R24
	ld R25,y+
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e delay1 _delay1 fV
;              x -> R20,R21
;              y -> R22,R23
;              t -> R16,R17
	.even
_delay1::
	xcall push_gset2
	.dbline -1
	.dbline 51
	.dbline 53
	movw R20,R16
	xjmp L64
L61:
	.dbline 54
	ldi R22,110
	ldi R23,0
	xjmp L68
L65:
	.dbline 54
L66:
	.dbline 54
	subi R22,1
	sbci R23,0
L68:
	.dbline 54
	cpi R22,0
	cpc R22,R23
	brne L65
X2:
L62:
	.dbline 53
	subi R20,1
	sbci R21,0
L64:
	.dbline 53
	cpi R20,0
	cpc R20,R21
	brne L61
X3:
	.dbline -2
	.dbline 55
L60:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r x 20 i
	.dbsym r y 22 i
	.dbsym r t 16 i
	.dbend
	.dbfunc e SystemInit _SystemInit fV
	.even
_SystemInit::
	.dbline -1
	.dbline 62
	.dbline 63
	xcall _TWI_init
	.dbline 64
	xcall _interrupt_init
	.dbline 65
	ldi R16,30
	ldi R17,0
	.dbline -2
	.dbline 66
L69:
	.dbline 0 ; func end
	xjmp _delay1
	.dbend
	.dbfunc e ClearAll _ClearAll fV
;              x -> R20
	.even
_ClearAll::
	xcall push_gset1
	sbiw R28,3
	.dbline -1
	.dbline 73
	.dbline 75
	clr R20
	xjmp L74
L71:
	.dbline 76
	.dbline 77
	ldi R24,31
	std y+2,R24
	clr R2
	std y+0,R2
	clr R18
	mov R16,R20
	xcall _ZLG7290_Download
	.dbline 78
L72:
	.dbline 75
	inc R20
L74:
	.dbline 75
	cpi R20,8
	brlo L71
	.dbline -2
	.dbline 79
L70:
	adiw R28,3
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbend
	.area lit(rom, con, rel)
L76:
	.byte 238,62
	.byte 156,'z
	.byte 158,142
	.byte 246,'n
	.byte 32,'p
	.byte 14,28
	.byte 58,206
	.byte 230,10
	.area text(rom, con, rel)
	.dbfile E:\PQ-1A\我的AVR\zlg7290\zlg7290_avr.c
	.dbfunc e Test_DispBuf _Test_DispBuf fV
;        DispDat -> y+0
;              n -> R20
;            dat -> R10
;            reg -> R12
;              x -> R22
	.even
_Test_DispBuf::
	xcall push_gset4
	sbiw R28,16
	.dbline -1
	.dbline 86
	.dbline 88
	ldi R24,<L76
	ldi R25,>L76
	movw R30,R28
	ldi R16,16
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	xcall asgncblk
	.dbline 96
	clr R20
	xjmp L80
L77:
	.dbline 97
	.dbline 98
	clr R22
	xjmp L84
L81:
	.dbline 99
	.dbline 100
	mov R24,R22
	subi R24,240    ; addi 16
	mov R12,R24
	.dbline 101
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R10,z+0
	.dbline 102
	mov R18,R10
	mov R16,R12
	xcall _ZLG7290_WriteReg
	.dbline 103
L82:
	.dbline 98
	inc R22
L84:
	.dbline 98
	cpi R22,8
	brlo L81
	.dbline 104
	ldi R16,50
	ldi R17,0
	xcall _delay1
	.dbline 105
L78:
	.dbline 96
	inc R20
L80:
	.dbline 96
	cpi R20,16
	brlo L77
	.dbline -2
	.dbline 106
L75:
	adiw R28,16
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l DispDat 0 A[16:16]c
	.dbsym r n 20 c
	.dbsym r dat 10 c
	.dbsym r reg 12 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e Test_Download _Test_Download fV
;              f -> R20
;             dp -> R22
;            dat -> R10
;              x -> R12
	.even
_Test_Download::
	xcall push_gset4
	sbiw R28,3
	.dbline -1
	.dbline 113
	.dbline 119
	ldi R22,1
	.dbline 120
	clr R20
	.dbline 121
	ldi R24,8
	mov R10,R24
	.dbline 122
	clr R12
	xjmp L89
L86:
	.dbline 123
	.dbline 124
	std y+2,R10
	std y+0,R20
	mov R18,R22
	mov R16,R12
	xcall _ZLG7290_Download
	.dbline 125
L87:
	.dbline 122
	inc R12
L89:
	.dbline 122
	mov R24,R12
	cpi R24,8
	brlo L86
	.dbline 126
	ldi R16,100
	ldi R17,0
	xcall _delay1
	.dbline 128
	clr R22
	.dbline 129
	clr R20
	.dbline 130
	clr R10
	xjmp L93
L90:
	.dbline 131
	.dbline 132
	clr R12
	xjmp L97
L94:
	.dbline 133
	.dbline 134
	std y+2,R10
	std y+0,R20
	mov R18,R22
	mov R16,R12
	xcall _ZLG7290_Download
	.dbline 135
L95:
	.dbline 132
	inc R12
L97:
	.dbline 132
	mov R24,R12
	cpi R24,8
	brlo L94
	.dbline 136
	ldi R16,50
	ldi R17,0
	xcall _delay1
	.dbline 137
L91:
	.dbline 130
	inc R10
L93:
	.dbline 130
	mov R24,R10
	cpi R24,32
	brlo L90
	.dbline -2
	.dbline 138
L85:
	adiw R28,3
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r f 20 c
	.dbsym r dp 22 c
	.dbsym r dat 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e Test_ScanNum _Test_ScanNum fV
;              x -> R20
	.even
_Test_ScanNum::
	xcall push_gset1
	sbiw R28,3
	.dbline -1
	.dbline 146
	.dbline 148
	clr R20
	xjmp L102
L99:
	.dbline 149
	.dbline 150
	ldi R24,8
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,1
	mov R16,R20
	xcall _ZLG7290_Download
	.dbline 151
L100:
	.dbline 148
	inc R20
L102:
	.dbline 148
	cpi R20,8
	brlo L99
	.dbline 152
	ldi R16,100
	ldi R17,0
	xcall _delay1
	.dbline 153
	clr R20
	xjmp L106
L103:
	.dbline 154
	.dbline 155
	mov R18,R20
	ldi R16,13
	xcall _ZLG7290_WriteReg
	.dbline 156
	ldi R16,100
	ldi R17,0
	xcall _delay
	.dbline 157
L104:
	.dbline 153
	inc R20
L106:
	.dbline 153
	cpi R20,8
	brlo L103
	.dbline -2
	.dbline 158
L98:
	adiw R28,3
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbend
	.dbfunc e Test_Flash _Test_Flash fV
;            dat -> R20
;              x -> R22
	.even
_Test_Flash::
	xcall push_gset2
	sbiw R28,3
	.dbline -1
	.dbline 165
	.dbline 166
	ldi R20,1
	.dbline 169
	clr R22
	xjmp L111
L108:
	.dbline 170
	.dbline 171
	std y+2,R22
	clr R2
	std y+0,R2
	clr R18
	mov R16,R22
	xcall _ZLG7290_Download
	.dbline 172
L109:
	.dbline 169
	inc R22
L111:
	.dbline 169
	cpi R22,8
	brlo L108
	.dbline 174
	ldi R18,17
	ldi R16,12
	xcall _ZLG7290_WriteReg
	.dbline 176
	clr R22
	xjmp L115
L112:
	.dbline 177
	.dbline 178
	mov R18,R20
	ldi R16,112
	xcall _ZLG7290_cmd
	.dbline 179
	lsl R20
	.dbline 180
	ldi R16,300
	ldi R17,1
	xcall _delay1
	.dbline 181
L113:
	.dbline 176
	inc R22
L115:
	.dbline 176
	cpi R22,8
	brlo L112
	.dbline 183
	ldi R18,255
	ldi R16,112
	xcall _ZLG7290_cmd
	.dbline 184
	ldi R16,350
	ldi R17,1
	xcall _delay1
	.dbline 186
	clr R18
	ldi R16,112
	xcall _ZLG7290_cmd
	.dbline 187
	ldi R16,50
	ldi R17,0
	xcall _delay1
	.dbline -2
	.dbline 188
L107:
	adiw R28,3
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e Test_SegOnOff _Test_SegOnOff fV
;            seg -> R20
	.even
_Test_SegOnOff::
	xcall push_gset1
	.dbline -1
	.dbline 195
; /*
; 函数:Test_SegOnOff()
; 功能:测试段寻址功能
; */
; void Test_SegOnOff()
; {
	.dbline 197
; 	uchar seg;
; 	ClearAll();
	xcall _ClearAll
	.dbline 198
; 	delay1(100);
	ldi R16,100
	ldi R17,0
	xcall _delay1
	.dbline 199
; 	for ( seg=0; seg<64; seg++ )
	clr R20
	xjmp L120
L117:
	.dbline 200
	.dbline 201
	ldi R18,1
	mov R16,R20
	xcall _ZLG7290_SegOnOff
	.dbline 202
	ldi R16,30
	ldi R17,0
	xcall _delay1
	.dbline 203
L118:
	.dbline 199
	inc R20
L120:
	.dbline 199
	cpi R20,64
	brlo L117
	.dbline 204
; 	{
; 		ZLG7290_SegOnOff(seg,1);
; 		delay1(30);
; 	}
; 	delay1(100);
	ldi R16,100
	ldi R17,0
	xcall _delay1
	.dbline 205
; 	for ( seg=0; seg<64; seg++ )
	clr R20
	xjmp L124
L121:
	.dbline 206
	.dbline 207
	clr R18
	mov R16,R20
	xcall _ZLG7290_SegOnOff
	.dbline 208
	ldi R16,30
	ldi R17,0
	xcall _delay1
	.dbline 209
L122:
	.dbline 205
	inc R20
L124:
	.dbline 205
	cpi R20,64
	brlo L121
	.dbline 210
; 	{
; 		ZLG7290_SegOnOff(seg,0);
; 		delay1(30);
; 	}
; 	delay1(100);
	ldi R16,100
	ldi R17,0
	xcall _delay1
	.dbline -2
	.dbline 211
; }
L116:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r seg 20 c
	.dbend
	.dbfunc e DispValue _DispValue fV
;              d -> R22
;            dat -> R10
;              x -> R20
	.even
_DispValue::
	xcall push_gset3
	mov R10,R18
	mov R20,R16
	sbiw R28,3
	.dbline -1
	.dbline 221
; 
; /*
; 函数:DispValue()
; 功能:显示100以内的数值
; 参数:
; 	x:显示位置,取值0~6
; 	dat:要显示的数据,取值0~99
; */
; void DispValue(uchar x, uchar dat)
; {
	.dbline 223
; 	uchar d;
; 	d = dat / 10;
	ldi R17,10
	mov R16,R10
	xcall div8u
	mov R22,R16
	.dbline 224
; 	ZLG7290_Download(x,0,0,d);
	std y+2,R22
	clr R2
	std y+0,R2
	clr R18
	mov R16,R20
	xcall _ZLG7290_Download
	.dbline 225
; 	d = dat - d * 10;
	ldi R24,10
	mul R24,R22
	mov R22,R10
	sub R22,R0
	.dbline 226
; 	ZLG7290_Download(x+1,0,0,d);
	std y+2,R22
	clr R2
	std y+0,R2
	clr R18
	mov R16,R20
	subi R16,255    ; addi 1
	xcall _ZLG7290_Download
	.dbline -2
	.dbline 227
; }
L125:
	adiw R28,3
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r d 22 c
	.dbsym r dat 10 c
	.dbsym r x 20 c
	.dbend
	.dbfunc e DispHexValue _DispHexValue fV
;              d -> R22
;            dat -> R10
;              x -> R20
	.even
_DispHexValue::
	xcall push_gset3
	mov R10,R18
	mov R20,R16
	sbiw R28,3
	.dbline -1
	.dbline 237
; 
; /*
; 函数:DispHexValue()
; 功能:以16进制方式显示数值
; 参数:
; 	x:显示位置,取值0~6
; 	dat:要显示的数据,取值0~255
; */
; void DispHexValue(uchar x, uchar dat)
; {
	.dbline 239
; 	uchar d;
; 	d = dat / 16;
	ldi R17,16
	mov R16,R10
	xcall div8u
	mov R22,R16
	.dbline 240
; 	ZLG7290_Download(x,0,0,d);
	std y+2,R22
	clr R2
	std y+0,R2
	clr R18
	mov R16,R20
	xcall _ZLG7290_Download
	.dbline 241
; 	d = dat - d * 16;
	ldi R24,16
	mul R24,R22
	mov R22,R10
	sub R22,R0
	.dbline 242
; 	ZLG7290_Download(x+1,0,0,d);
	std y+2,R22
	clr R2
	std y+0,R2
	clr R18
	mov R16,R20
	subi R16,255    ; addi 1
	xcall _ZLG7290_Download
	.dbline -2
	.dbline 243
; }
L126:
	adiw R28,3
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r d 22 c
	.dbsym r dat 10 c
	.dbsym r x 20 c
	.dbend
	.dbfunc e Test_Key _Test_Key fV
;     FnKeyValue -> y+2
;      RepeatCnt -> y+1
;       KeyValue -> y+0
	.even
_Test_Key::
	sbiw R28,3
	.dbline -1
	.dbline 250
; 
; /*
; 函数:Test_Key()
; 功能:测试按键功能
; */
; void Test_Key()
; {
	.dbline 254
; 	uchar KeyValue;
; 	uchar RepeatCnt;
; 	uchar FnKeyValue;
; 	ClearAll();
	xcall _ClearAll
	.dbline 255
; 	for (;;)
L128:
	.dbline 256
	.dbline 257
	lds R2,_FlagINT
	lds R3,_FlagINT+1
	tst R2
	brne X4
	tst R3
	breq L128
X4:
	.dbline 258
	.dbline 260
	clr R2
	clr R3
	sts _FlagINT+1,R3
	sts _FlagINT,R2
	.dbline 262
	movw R18,R28
	ldi R16,1
	xcall _ZLG7290_ReadReg
	.dbline 263
	movw R18,R28
	subi R18,255  ; offset = 1
	sbci R19,255
	ldi R16,2
	xcall _ZLG7290_ReadReg
	.dbline 264
	movw R18,R28
	subi R18,254  ; offset = 2
	sbci R19,255
	ldi R16,3
	xcall _ZLG7290_ReadReg
	.dbline 266
	ldd R18,y+0
	clr R16
	xcall _DispValue
	.dbline 267
	ldd R18,y+1
	ldi R16,3
	xcall _DispHexValue
	.dbline 268
	ldd R18,y+2
	ldi R16,6
	xcall _DispHexValue
	.dbline 269
	.dbline 270
	.dbline 255
	.dbline 255
	xjmp L128
X5:
	.dbline -2
L127:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbsym l FnKeyValue 2 c
	.dbsym l RepeatCnt 1 c
	.dbsym l KeyValue 0 c
	.dbend
	.dbfunc e main _main fV
;              x -> R20
	.even
_main::
	sbiw R28,3
	.dbline -1
	.dbline 274
; 	{
; 		if ( FlagINT )		//如果有键按下
; 		{
; 		//清除中断标志
; 			FlagINT = 0;
; 		//读取键值、连击计数器值、功能键值
; 			ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
; 			ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
; 			ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
; 		//显示键值、连击计数器值、功能键值
; 			DispValue(0,KeyValue);
; 			DispHexValue(3,RepeatCnt);
; 			DispHexValue(6,FnKeyValue);
; 		}
; 	}
; }
; 
; void main()
; {
	.dbline 276
;    uchar x;
; 	SystemInit();		//系统初始化
	xcall _SystemInit
	xjmp L136
L135:
	.dbline 284
; 	//Test_DispBuf();		//测试直接写显存
; 	//Test_Download();	//测试下载数据
; 	//Test_ScanNum();	//测试不同扫描位数
; 	//Test_Flash();		//测试闪烁功能
; 	//Test_SegOnOff();	//测试段寻址功能
; 	//Test_Key();		//测试键盘功能
; 	while (1)
; 	{
	.dbline 285
; 	   for ( x=0; x<8; x++ )
	clr R20
	xjmp L141
L138:
	.dbline 286
	.dbline 287
	ldi R24,5
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,1
	mov R16,R20
	xcall _ZLG7290_Download
	.dbline 288
L139:
	.dbline 285
	inc R20
L141:
	.dbline 285
	cpi R20,8
	brlo L138
	.dbline 289
; 	    {
; 		ZLG7290_Download(x,1,0,5);
; 	     }
; 	    delay1(100);
	ldi R16,100
	ldi R17,0
	xcall _delay1
	.dbline 292
; 	  //Test_Key();
; 	  //ZLG7290_Download(0,0,0,4); 
; 	   for ( x=0; x<6; x++ )
	clr R20
	xjmp L145
L142:
	.dbline 293
	.dbline 294
	mov R18,R20
	ldi R16,13
	xcall _ZLG7290_WriteReg
	.dbline 295
	ldi R16,100
	ldi R17,0
	xcall _delay
	.dbline 296
L143:
	.dbline 292
	inc R20
L145:
	.dbline 292
	cpi R20,6
	brlo L142
	.dbline 297
L136:
	.dbline 283
	xjmp L135
X6:
	.dbline -2
	.dbline 298
; 	    {
; 		  ZLG7290_WriteReg(ZLG7290_ScanNum,x);
; 		  delay(100);
; 	    }
; 	}
; }
L134:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbsym r x 20 c
	.dbend

⌨️ 快捷键说明

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