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

📄 display_board2.1.s

📁 一个LED特效显示程序
💻 S
📖 第 1 页 / 共 3 页
字号:
	ldi R24,255
	out 0x1a,R24
	.dbline 95
	out 0x14,R24
	.dbline 96
	out 0x11,R24
	.dbline 97
	ldi R20,255
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	out 0x1b,R2
	.dbline 98
	ldi R24,8
	ldi R25,0
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall asr32
	movw R2,R16
	movw R4,R18
	ldi R20,255
	ldi R21,0
	ldi R22,0
	ldi R23,0
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	out 0x15,R2
	.dbline 99
	ldi R24,13
	ldi R25,0
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall asr32
	movw R2,R16
	movw R4,R18
	ldi R20,24
	ldi R21,0
	ldi R22,0
	ldi R23,0
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	in R24,0x12
	clr R25
	andi R24,231
	andi R25,0
	movw R6,R24
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	out 0x12,R6
	.dbline 100
	in R24,0x12
	andi R24,254
	out 0x12,R24
	.dbline 100
	.dbline -2
L43:
	xcall pop_gset2
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l adress 4 L
	.dbend
	.area vector(rom, abs)
	.org 4
	jmp _exi_int0
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/flash_M16.h
	.area vector(rom, abs)
	.org 32
	jmp _timer1_vof
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/flash_M16.h
	.area vector(rom, abs)
	.org 44
	jmp _usart_rcx
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/flash_M16.h
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/flash_M16.h
_sys_cont::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/flash_M16.h
	.dbfile display_board2.1.c
	.dbsym e sys_cont _sys_cont I
_PDataY::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e PDataY _PDataY I
_PDataYMax::
	.blkb 2
	.area idata
	.word 154
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e PDataYMax _PDataYMax I
_PDataYMin::
	.blkb 2
	.area idata
	.word 4
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e PDataYMin _PDataYMin I
_FileEnd::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e FileEnd _FileEnd c
_HeadLoad::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e HeadLoad _HeadLoad c
_HeadEN::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e HeadEN _HeadEN c
_DataIndex::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e DataIndex _DataIndex I
_FileLength::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e FileLength _FileLength I
_time_out_ms::
	.blkb 2
	.area idata
	.word 1
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e time_out_ms _time_out_ms i
_time_out_s::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e time_out_s _time_out_s c
_DispModel::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e DispModel _DispModel c
_ModelDelayTime::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e ModelDelayTime _ModelDelayTime I
_ModelContJuge::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile display_board2.1.c
	.dbsym e ModelContJuge _ModelContJuge c
	.area text(rom, con, rel)
	.dbfile display_board2.1.c
	.dbfunc e port_int _port_int fV
	.even
_port_int::
	.dbline -1
	.dbline 128
; ****************************************/
; void port_int(void)
; {
	.dbline 129
;      DDRA =0XFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 130
; 	 PORTA =0XFF;
	out 0x1b,R24
	.dbline 131
; 	 DDRB =0B00001110;
	ldi R24,14
	out 0x17,R24
	.dbline 132
; 	 PORTB =0XFF;
	ldi R24,255
	out 0x18,R24
	.dbline 133
; 	 DDRC =0XFF;
	out 0x14,R24
	.dbline 134
; 	 PORTC =0XFF;
	out 0x15,R24
	.dbline 135
; 	 DDRD  = 0xF8;	        //
	ldi R24,248
	out 0x11,R24
	.dbline 136
;  	 PORTD = 0XFF;
	ldi R24,255
	out 0x12,R24
	.dbline -2
L44:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer_int _timer_int fV
	.even
_timer_int::
	.dbline -1
	.dbline 143
; }
; 
; /****************************************
;           定时器
; ****************************************/
; void timer_int(void)
; { 
	.dbline 144
;      TCCR1B = 0x00; //stop
	clr R2
	out 0x2e,R2
	.dbline 145
;  	 TCNT1H = 0xd4; //setup
	ldi R24,212
	out 0x2d,R24
	.dbline 146
;  	 TCNT1L = 0xce;
	ldi R24,206
	out 0x2c,R24
	.dbline 147
;  	 TCCR1A = 0x00;
	out 0x2f,R2
	.dbline 148
;  	 TCCR1B = 0x01; //start Timer
	ldi R24,1
	out 0x2e,R24
	.dbline 149
;      TIMSK = 0x04;
	ldi R24,4
	out 0x39,R24
	.dbline -2
L45:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e exit_int _exit_int fV
	.even
_exit_int::
	.dbline -1
	.dbline 157
; 
; }
; 
; /****************************************
;           外中断
; ****************************************/
; void exit_int(void)
; {
	.dbline 158
;      GICR  = 0x40; 
	ldi R24,64
	out 0x3b,R24
	.dbline 159
;   	 MCUCR = 0x02;
	ldi R24,2
	out 0x35,R24
	.dbline -2
L46:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_int _uart_int fV
	.even
_uart_int::
	.dbline -1
	.dbline 167
; 
; }
; 
; /****************************************
;           串口通讯
; ****************************************/
; void uart_int(void)
; {
	.dbline 168
;       UCSRB = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 169
;       UCSRA = 0x00;
	out 0xb,R2
	.dbline 170
;       UCSRC = 0x00;
	out 0x20,R2
	.dbline 171
;       UBRR =5;      //设置波特率115200
	ldi R24,5
	out 0x9,R24
	.dbline 172
;       UCSRB = 0x98; //接受中断允许,接受允许,发送允许
	ldi R24,152
	out 0xa,R24
	.dbline 173
;       UCSRC = 0xBc; //8BIT, 奇校验,2停止位
	ldi R24,188
	out 0x20,R24
	.dbline -2
L47:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e device_int _device_int fV
	.even
_device_int::
	.dbline -1
	.dbline 180
; }
; 
; /****************************************
;           器件初始化函数
; ****************************************/
; void device_int(void)
; {
	.dbline 181
;      CLI();
	cli
	.dbline 182
;    	 port_int();
	xcall _port_int
	.dbline 183
;    	 timer_int();
	xcall _timer_int
	.dbline 184
;    	 exit_int();
	xcall _exit_int
	.dbline 185
;    	 uart_int();
	xcall _uart_int
	.dbline 186
; 	 SEI(); 
	sei
	.dbline -2
L48:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_TX _uart_TX fV
;           data -> R16
	.even
_uart_TX::
	.dbline -1
	.dbline 193
; }
; 
; /****************************************
;           串口收发数据
; ****************************************/
; void uart_TX(unsigned char data)
; {
	.dbline 194
;     UCSRA |=0X40;         //标志清零
	sbi 0xb,6
	.dbline 195
; 	UDR =data;
	out 0xc,R16
	.dbline -2
L49:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e uart_time_out _uart_time_out fV
	.even
_uart_time_out::
	.dbline -1
	.dbline 201
; }
; //***************
; //传输超时处理,当time_out_ms大于设定值的时候,等待等待20S,并且
; //一直发送标志符号,超过20S以后,进行错误处理	 
; void uart_time_out(void)
; {
	.dbline 202
; 	 time_out_ms++;
	lds R24,_time_out_ms
	lds R25,_time_out_ms+1
	adiw R24,1
	sts _time_out_ms+1,R25
	sts _time_out_ms,R24
	.dbline 203
; 	 if (HeadEN ==0 && FileEnd ==0 && time_out_ms >=800 )
	lds R2,_HeadEN
	tst R2
	brne L51
	lds R2,_FileEnd
	tst R2
	brne L51
	cpi R24,32
	ldi R30,3
	cpc R25,R30
	brlo L51
	.dbline 204
; 	 {
	.dbline 205
; 		if(sys_cont ==0)		 //秒记时 
	lds R2,_sys_cont
	lds R3,_sys_cont+1
	tst R2
	brne L53
	tst R3
	brne L53
X1:
	.dbline 206
; 		{
	.dbline 207
; 		   time_out_s++;
	lds R24,_time_out_s
	subi R24,255    ; addi 1
	sts _time_out_s,R24
	.dbline 208
; 		   if (time_out_s ==20)	 //结束标志
	cpi R24,20
	brne L55
	.dbline 209
; 		   {
	.dbline 210
; 			  time_out_ms=1;	 //闲置标志
	ldi R24,1
	ldi R25,0
	sts _time_out_ms+1,R25
	sts _time_out_ms,R24
	.dbline 211
; 			  HeadEN=1;
	sts _HeadEN,R24
	.dbline 212
; 			  FileEnd=1;
	sts _FileEnd,R24
	.dbline 214
; 			  //进行错误处理,并要跳出此结构体
; 			  {/**********/}
	.dbline 214
	.dbline 215
; 		   }
L55:
	.dbline 216
; 		}
L53:
	.dbline 217
; 		uart_TX(0xAA);			 //重复发送标志位
	ldi R16,170
	xcall _uart_TX
	.dbline 218
; 		time_out_ms--;   
	lds R24,_time_out_ms
	lds R25,_time_out_ms+1
	sbiw R24,1
	sts _time_out_ms+1,R25
	sts _time_out_ms,R24
	.dbline 219
; 	 }
L51:
	.dbline 220
	lds R24,_time_out_ms
	lds R25,_time_out_ms+1
	cpi R24,232
	ldi R30,3
	cpc R25,R30
	brne L57
	.dbline 221
	ldi R24,1
	ldi R25,0
	sts _time_out_ms+1,R25
	sts _time_out_ms,R24
L57:
	.dbline -2
L50:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SPI_data_send _SPI_data_send fV
;          count -> R20
;      send_data -> R22
	.even
_SPI_data_send::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 228
; 	 if (time_out_ms ==1000)
; 	 	time_out_ms=1;	   	 //1 表示空闲状态
; }
; /***************************************************
;                向显示屏送数据
; ***************************************************/
; 
; void SPI_data_send(unsigned char send_data)       //向595送数据串
; {  
	.dbline 230
;    unsigned char count;
;    for(count =0;count<8;count++)
	clr R20
	xjmp L63
L60:
	.dbline 231
;    {
	.dbline 232
;       if(((send_data<<count)&0x80 )==0)
	mov R16,R22
	mov R17,R20
	xcall lsl8
	mov R24,R16
	andi R24,128
	brne L64
	.dbline 233
; 	     PORTC &= 0b01111111;      	   			   //送 data
	in R24,0x15
	andi R24,127
	out 0x15,R24
	xjmp L65
L64:
	.dbline 235
;       else
; 	     PORTC |= 0b10000000;
	sbi 0x15,7
L65:
	.dbline 236
	sbi 0x12,3
	.dbline 237
	in R24,0x12
	andi R24,247
	out 0x12,R24
	.dbline 238
L61:
	.dbline 230
	inc R20
L63:
	.dbline 230
	cpi R20,8
	brlo L60
	.dbline -2
L59:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r count 20 c
	.dbsym r send_data 22 c
	.dbend
	.dbfunc e Screen_send _Screen_send fV
;              i -> R20
	.even
_Screen_send::
	xcall push_gset1
	.dbline -1
	.dbline 241
; 	  PORTD |=0b00001000;        				   //送SCK信号
;       PORTD &=0b11110111;
;    }
; }
; void Screen_send(void)
; {
	.dbline 243
;     char i;
; 	PORTD &= 0b11101111;       //送RCK信号,底电平                
	in R24,0x12
	andi R24,239
	out 0x12,R24
	.dbline 244
; 	for(i =0;i <8;i++)
	clr R20
	xjmp L70
L67:
	.dbline 245
	.dbline 246
	ldi R16,255
	xcall _SPI_data_send
	.dbline 247
L68:
	.dbline 244
	inc R20
L70:
	.dbline 244
	cpi R20,8
	brlo L67
	.dbline 248
; 	{
; 	    SPI_data_send(0xff);//sys_cont);   //DispTemp[i]);  
;     }
; 	PORTD |= 0b00010000;       //关闭RCK信号,高电平
	sbi 0x12,4
	.dbline -2
L66:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e RAM_Write _RAM_Write fV
;           data -> R18
;         adress -> R16,R17
	.even
_RAM_Write::
	.dbline -1
	.dbline 256
; 
; }
; /**************************************************
; 			 数据接受,外部RAM读写
; ****************************************************/
; //写外部RAM
; void RAM_Write(int adress,char data)
; {
	.dbline 257
;    PORTD |=0B11100000;           //关ALE  读关闭  写关闭
	in R24,0x12
	ori R24,224
	out 0x12,R24
	.dbline 258
;    DDRA =0XFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 259
;    PORTA =adress&0xff;
	movw R24,R16
	andi R25,0
	out 0x1b,R24
	.dbline 260
;    PORTC =(adress >>8)&0xff;
	movw R24,R16
	mov R24,R25
	clr R25
	sbrc R24,7
	com R25
	andi R25,0
	out 0x15,R24
	.dbline 261
;    PORTD &=0b01111111;                         
	in R24,0x12
	andi R24,127
	out 0x12,R24
	.dbline 262
;    PORTA =data;
	out 0x1b,R18
	.dbline 263
;    PORTD &=0b10111111;
	in R24,0x12
	andi R24,191
	out 0x12,R24
	.dbline -2
L71:
	.dbline 0 ; func end
	ret
	.dbsym r data 18 c
	.dbsym r adress 16 I
	.dbend
	.dbfunc e RAM_Read _RAM_Read fc
;           temp -> R20
;         adress -> R16,R17
	.even
_RAM_Read::
	xcall push_gset1
	.dbline -1
	.dbline 268
;    //PORTD |=0B01100000;           //关ALE  读关闭  写关闭
; }
; //读外部RAM
; char RAM_Read(int adress)
; {
	.dbline 270
;    char temp;
;    PORTD |=0B11100000;           //关ALE  读关闭  写关闭
	in R24,0x12
	ori R24,224
	out 0x12,R24
	.dbline 271
;    DDRA =0XFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 272
;    PORTA =adress&0xff;
	movw R24,R16
	andi R25,0
	out 0x1b,R24
	.dbline 273
;    PORTC =(adress >>8)&0xff;
	movw R24,R16
	mov R24,R25
	clr R25
	sbrc R24,7
	com R25
	andi R25,0
	out 0x15,R24
	.dbline 274
;    PORTD &=0b01111111;                         
	in R24,0x12
	andi R24,127
	out 0x12,R24
	.dbline 275
;    PORTD &=0b11011111;
	in R24,0x12
	andi R24,223
	out 0x12,R24
	.dbline 276
;    DDRA =0;
	clr R2
	out 0x1a,R2
	.dbline 277
;    PORTA =0XFF;
	ldi R24,255
	out 0x1b,R24
	.dbline 278
;    temp =PINA;
	in R20,0x19
	.dbline 279
;    return temp;
	mov R16,R20
	.dbline -2
L72:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r adress 16 I
	.dbend
	.dbfunc e data_store _data_store fV
;           data -> R20
	.even
_data_store::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 284
; }
; //存储数据到外部RAM
; 
; void data_store(char data)
; {
	.dbline 285
;    if((data ==76) &&(FileEnd ==1))     //数据起始位检测
	cpi R20,76
	brne L74
	lds R24,_FileEnd
	cpi R24,1
	brne L74
	.dbline 286
;    {
	.dbline 287
;        HeadEN =1;                           //开启头文件数据传输
	ldi R24,1
	sts _HeadEN,R24
	.dbline 288
; 	   HeadLoad =0;                         //头文件指针清零
	clr R2
	sts _HeadLoad,R2
	.dbline 289
; 	   DataIndex =0;                        //存储数据指针清零
	clr R3
	sts _DataIndex+1,R3
	sts _DataIndex,R2
	.dbline 290
;    }
L74:
	.dbline 291
;    if((HeadEN ==0) &&(FileEnd ==0))
	lds R2,_HeadEN
	tst R2
	brne L76
	lds R2,_FileEnd
	tst R2
	brne L76
	.dbline 292
;    {
	.dbline 293
; 	   RAM_Write(DataIndex,data);            //数组送数
	mov R18,R20
	lds R16,_DataIndex
	lds R17,_DataIndex+1

⌨️ 快捷键说明

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