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

📄 display_board2.1.s

📁 一个LED特效显示程序
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module display_board2.1.c
	.area lit(rom, con, rel)
_DISCODE::
	.byte 63,6
	.byte 91,'O
	.byte 'f,'m
	.byte 125,7
	.byte 127,'o
	.byte 'w,124
	.byte 57,94
	.byte 'y,'q
	.byte 0,64
	.byte 'c
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e DISCODE _DISCODE A[19:19]kc
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
_Disp_Buff::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e Disp_Buff _Disp_Buff A[8:8]c
_disp_key_count::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e disp_key_count _disp_key_count c
_disp_code::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e disp_code _disp_code I
_time_count_sys::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e time_count_sys _time_count_sys i
_key_num::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e key_num _key_num c
_old_key_num::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e old_key_num _old_key_num c
_new_key_num::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e new_key_num _new_key_num c
_key_buff::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e key_buff _key_buff A[8:8]c
_key_down_time::
	.blkb 2
	.area idata
	.word 1
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e key_down_time _key_down_time I
_key_delay::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e key_delay _key_delay c
_delay_time_count::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e delay_time_count _delay_time_count i
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/disp_key.h
	.dbfunc e delay _delay fV
;              n -> R16,R17
	.even
_delay::
	.dbline -1
	.dbline 47
; /*器件:AVR ATMEGA16、373缩存器、62256K扩展RAM
; I/O定义:
; SPI接口显示键盘:
;          PB0:    键盘	  
;          PB1:    RCK
; 		 PB2:    SCK
; 		 PB3:    DATA
; SPI屏幕接口:
;          PC7:    DATA
; 		 PD3:    SCK
; 		 PD4:    RCK
; RAM:	
;          PA0~7:  PC0~7   A0~A15地址线
; 		 PC0~6:  DATA总线复用
; 		 PD7:    ALE
; 		 PD6:    WE
; 		 PD5:    RE
; 下载:		   
; 		 PB4~7:  SPI通讯和下载端口
;          PD0~1:  UART通讯口
; 电机:
; 		 PD2:  外中断,电机脉冲
; */
; 
; /********************************************************
;     广告屏程序第二次改版----主显示控制模块程序2.0
;                
; 			   1、程序采用模块化构架,提高了可读性
;                2、此程序支持第二套广告屏硬件
;                3、创建时间:2004年11月23日
; 			   4、作者:西南科技大学 电子设计大赛第8大组
;                注意:需要包括 :<disp_key.h>
; 							   
; ********************************************************/
; 
; 
; 
; /***************************************************
;             头文件申明
; ****************************************************/
; 
; #include<iom16v.h>
; #include <macros.h>
; #include "disp_key.h"
; #include "flash_M16.h"
; /************************************************
;             宏定义
	.dbline 48
; **************************************************/
	sts _delay_time_count+1,R17
	sts _delay_time_count,R16
L2:
	.dbline 49
L3:
	.dbline 49
; //RAM
	lds R2,_delay_time_count
	lds R3,_delay_time_count+1
	tst R2
	brne L2
	tst R3
	brne L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r n 16 i
	.dbend
	.dbfunc e disp_bit _disp_bit fV
;      bitChoose -> R22
;   disCodeIndex -> R20
	.even
_disp_bit::
	xcall push_gset2
	mov R22,R18
	mov R20,R16
	.dbline -1
	.dbline 53
; #define ALE  7                   //定义锁存脚
; #define WE   6                   //定义写允许位
; #define RE   5                   //定义读允许位
; 
	.dbline 54
; 
	in R24,0x18
	andi R24,253
	out 0x18,R24
	.dbline 55
; #pragma interrupt_handler exi_int0:2   	//外部中断
	mov R16,R22
	xcall _send_data_disp
	.dbline 56
; #pragma interrupt_handler timer1_vof:9   	//定时器1中断
	ldi R24,<_DISCODE
	ldi R25,>_DISCODE
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _send_data_disp
	.dbline 57
; #pragma  interrupt_handler usart_rcx:12   //USART接受中断
	sbi 0x18,1
	.dbline -2
L5:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r bitChoose 22 c
	.dbsym r disCodeIndex 20 c
	.dbend
	.dbfunc e send_data_disp _send_data_disp fV
;          count -> R20
;      send_data -> R22
	.even
_send_data_disp::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 60
; /************************************************
;             全局变量申明
; **************************************************/
	.dbline 62
; //基本全局变量
; int sys_cont =0;
	clr R20
	xjmp L10
L7:
	.dbline 63
; //显示缓冲区
	.dbline 64
; char DispTemp[8];
	mov R16,R22
	mov R17,R20
	xcall lsl8
	mov R24,R16
	andi R24,128
	brne L11
	.dbline 65
; char Head[3];
	in R24,0x18
	andi R24,247
	out 0x18,R24
	xjmp L12
L11:
	.dbline 67
; //按键处理
; 
	sbi 0x18,3
L12:
	.dbline 68
	sbi 0x18,2
	.dbline 69
	in R24,0x18
	andi R24,251
	out 0x18,R24
	.dbline 70
L8:
	.dbline 62
	inc R20
L10:
	.dbline 62
	cpi R20,8
	brlo L7
	.dbline -2
L6:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r count 20 c
	.dbsym r send_data 22 c
	.dbend
	.dbfunc e Disp_key_group _Disp_key_group fV
	.even
_Disp_key_group::
	.dbline -1
	.dbline 74
; //数脉冲
; int PDataY =0;
; int PDataYMax =154;
; int PDataYMin =4;
; 
; //UART接收数据
; char FileEnd =1;
	.dbline 75
; char HeadLoad =0;
	lds R24,_disp_key_count
	subi R24,255    ; addi 1
	sts _disp_key_count,R24
	.dbline 76
; char HeadEN =1;
	ldi R24,7
	lds R2,_disp_key_count
	cp R24,R2
	brsh L14
	.dbline 77
; int  DataIndex =0;
	clr R2
	sts _disp_key_count,R2
L14:
	.dbline 78
; int  FileLength =0;
	lds R17,_disp_key_count
	ldi R16,1
	xcall lsl8
	mov R18,R16
	ldi R24,<_Disp_Buff
	ldi R25,>_Disp_Buff
	lds R30,_disp_key_count
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _disp_bit
	.dbline 79
; unsigned int time_out_ms=1; 		 //接收数据时限
	sbic 0x16,0
	rjmp L16
	.dbline 80
; unsigned char time_out_s=0; 		 //试图通讯重新时限
	ldi R24,<_key_buff
	ldi R25,>_key_buff
	lds R30,_disp_key_count
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,1
	std z+0,R24
	xjmp L17
L16:
	.dbline 82
	ldi R24,<_key_buff
	ldi R25,>_key_buff
	lds R30,_disp_key_count
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L17:
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e dec_hex_disp _dec_hex_disp fV
;           temp -> R20,R21
;              i -> R22
	.even
_dec_hex_disp::
	xcall push_gset2
	.dbline -1
	.dbline 85
; 
; //特效处理
; char DispModel =0;
; int  ModelDelayTime =0;
; char ModelContJuge=0;
	.dbline 88
; /************************************************
;              函数申明
; **************************************************/
	lds R20,_disp_code
	lds R21,_disp_code+1
	.dbline 89
; //基本初始化
	clr R22
	xjmp L22
L19:
	.dbline 90
	ldi R24,4
	mul R24,R22
	movw R18,R0
	movw R16,R20
	xcall asr16
	movw R24,R16
	andi R24,15
	andi R25,0
	ldi R30,<_Disp_Buff
	ldi R31,>_Disp_Buff
	mov R26,R22
	clr R27
	add R26,R30
	adc R27,R31
	st x,R24
L20:
	.dbline 89
	inc R22
L22:
	.dbline 89
	cpi R22,7
	brlo L19
	.dbline -2
L18:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 I
	.dbsym r i 22 c
	.dbend
	.dbfunc e Key_num _Key_num fV
;              j -> R16
;              i -> R18
	.even
_Key_num::
	.dbline -1
	.dbline 94
; void port_int(void);
; void timer_int(void);
; void uart_int(void);
; void device_int(void);
; 
	.dbline 96
; //按键显示事件处理
; void Display_event(void);        //显示事件
	clr R16
	.dbline 97
; void KEY_event(void);            //按键事件处理
	clr R2
	lds R3,_key_delay
	cp R2,R3
	brsh L24
	.dbline 98
; 
	mov R24,R3
	subi R24,1
	sts _key_delay,R24
L24:
	.dbline 99
; //特效处理
	clr R18
	xjmp L29
L26:
	.dbline 100
; void Disp_Model(void);           //屏幕显示特效模式
	.dbline 101
; 
	ldi R24,<_key_buff
	ldi R25,>_key_buff
	mov R30,R18
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,1
	brne L30
	.dbline 102
; //外部RAM读写操作
	.dbline 103
; void data_store(char data);
	sts _new_key_num,R18
	.dbline 104
; char RAM_Read(int adress);
	ldi R16,1
	.dbline 105
; void RAM_Write(int adress,char data);
L30:
	.dbline 106
L27:
	.dbline 99
	inc R18
L29:
	.dbline 99
	ldi R24,7
	cp R24,R18
	brsh L26
	.dbline 107
; 
; //显示屏数据发送
	tst R16
	brne L32
	.dbline 108
; void Screen_send(void);
	ldi R24,15
	sts _new_key_num,R24
L32:
	.dbline 109
; void SPI_data_send(unsigned char send_data);
	lds R24,_old_key_num
	cpi R24,15
	brne L34
	lds R24,_new_key_num
	cpi R24,15
	breq L34
	lds R2,_key_delay
	tst R2
	brne L34
	.dbline 110
; 
	mov R2,R24
	sts _key_num,R2
	xjmp L35
L34:
	.dbline 111
; //UART收发数据
	lds R24,_old_key_num
	cpi R24,15
	breq L36
	lds R3,_new_key_num
	cp R3,R24
	brne L36
	.dbline 112
; void uart_TX(unsigned char data);    
	.dbline 113
; void uart_time_out(void);
	ldi R24,15
	sts _key_num,R24
	.dbline 114
; 
	lds R24,_key_down_time
	lds R25,_key_down_time+1
	adiw R24,1
	sts _key_down_time+1,R25
	sts _key_down_time,R24
	.dbline 115
; //中断函数
	xjmp L37
L36:
	.dbline 117
; void exi_int0(void);
; void timer1_vof(void);
	.dbline 118
; void usart_rcx(void);
	lds R24,_old_key_num
	cpi R24,15
	breq L38
	lds R24,_new_key_num
	cpi R24,15
	brne L38
	.dbline 119
; /*************************************************
	.dbline 120
; *             子函数区                           *
	ldi R24,15
	sts _key_num,R24
	.dbline 121
; *                                                *
	clr R2
	clr R3
	sts _key_down_time+1,R3
	sts _key_down_time,R2
	.dbline 122
; *************************************************/
	ldi R24,100
	sts _key_delay,R24
	.dbline 123
; 
L38:
	.dbline 124
; /****************************************
L37:
L35:
	.dbline 125
;           端口定义
	lds R2,_new_key_num
	sts _old_key_num,R2
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbsym r j 16 c
	.dbsym r i 18 c
	.dbend
	.dbfile C:\Documents and Settings\fli\桌面\广告屏程序\写字库程序/flash_M16.h
	.dbfunc e FlashRead _FlashRead fc
;           data -> R20
;    data_adress -> y+2
	.even
_FlashRead::
	xcall push_arg4
	xcall push_gset1
	.dbline -1
	.dbline 26
	.dbline 28
	in R24,0x12
	andi R24,251
	out 0x12,R24
	.dbline 28
	.dbline 29
	sbi 0x12,1
	.dbline 29
	.dbline 30
	movw R30,R28
	ldd R16,z+2
	ldd R17,z+3
	ldd R18,z+4
	ldd R19,z+5
	xcall _AdressSend
	.dbline 31
	clr R2
	out 0x1a,R2
	.dbline 32
	in R20,0x19
	.dbline 33
	sbi 0x12,2
	.dbline 33
	.dbline 34
	mov R16,R20
	.dbline -2
L40:
	xcall pop_gset1
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbsym l data_adress 2 L
	.dbend
	.dbfunc e FlashWrite _FlashWrite fV
;           data -> R10
;    data_adress -> R12,R13
	.even
_FlashWrite::
	xcall push_gset4
	mov R10,R18
	movw R12,R16
	.dbline -1
	.dbline 38
	.dbline 39
	in R24,0x12
	andi R24,253
	out 0x12,R24
	.dbline 39
	.dbline 40
	sbi 0x12,2
	.dbline 40
	.dbline 41
	ldi R16,85
	ldi R17,85
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 42
	ldi R24,255
	out 0x1a,R24
	.dbline 43
	ldi R24,170
	out 0x1b,R24
	.dbline 45
	ldi R16,170
	ldi R17,42
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 46
	ldi R24,255
	out 0x1a,R24
	.dbline 47
	ldi R24,85
	out 0x1b,R24
	.dbline 49
	ldi R16,85
	ldi R17,85
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 50
	ldi R24,255
	out 0x1a,R24
	.dbline 51
	ldi R24,160
	out 0x1b,R24
	.dbline 53
	movw R2,R12
	clr R4
	clr R5
	movw R16,R2
	movw R18,R4
	xcall _AdressSend
	.dbline 54
	ldi R24,255
	out 0x1a,R24
	.dbline 55
	out 0x1b,R10
	.dbline 56
	sbi 0x12,1
	.dbline 56
	.dbline -2
L41:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r data 10 c
	.dbsym r data_adress 12 i
	.dbend
	.dbfunc e ChipErase _ChipErase fV
	.even
_ChipErase::
	xcall push_gset2
	.dbline -1
	.dbline 60
	.dbline 62
	in R24,0x12
	andi R24,253
	out 0x12,R24
	.dbline 62
	.dbline 63
	sbi 0x12,2
	.dbline 63
	.dbline 64
	ldi R16,85
	ldi R17,85
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 65
	ldi R24,255
	out 0x1a,R24
	.dbline 66
	ldi R24,170
	out 0x1b,R24
	.dbline 68
	ldi R16,170
	ldi R17,42
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 69
	ldi R24,255
	out 0x1a,R24
	.dbline 70
	ldi R24,85
	out 0x1b,R24
	.dbline 72
	ldi R16,85
	ldi R17,85
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 73
	ldi R24,255
	out 0x1a,R24
	.dbline 74
	ldi R24,128
	out 0x1b,R24
	.dbline 76
	ldi R16,85
	ldi R17,85
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 77
	ldi R24,255
	out 0x1a,R24
	.dbline 78
	ldi R24,170
	out 0x1b,R24
	.dbline 80
	ldi R16,170
	ldi R17,42
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 81
	ldi R24,255
	out 0x1a,R24
	.dbline 82
	ldi R24,85
	out 0x1b,R24
	.dbline 84
	ldi R16,85
	ldi R17,85
	ldi R18,0
	ldi R19,0
	xcall _AdressSend
	.dbline 85
	ldi R24,255
	out 0x1a,R24
	.dbline 86
	ldi R24,16
	out 0x1b,R24
	.dbline 88
	sbi 0x12,1
	.dbline 88
	.dbline -2
L42:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e AdressSend _AdressSend fV
;         adress -> y+4
	.even
_AdressSend::
	xcall push_arg4
	xcall push_gset2
	.dbline -1
	.dbline 92
	.dbline 93
	sbi 0x12,0
	.dbline 93
	.dbline 94

⌨️ 快捷键说明

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