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

📄 display_board3.0.s

📁 一个LED特效显示程序
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module display_board3.0.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\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e DISCODE _DISCODE A[19:19]kc
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
_Disp_Buff::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/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\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.dbsym e delay_time_count _delay_time_count i
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/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屏幕接口& 下载口:
;          PB4:    SS
; 		 PB5:    DI
; 		 PD7:    SCK
; RAM:	
;          PA0~7:  PC0~7   A0~A7地址线
; 		 PC2~6:  A10~A14地址
; 		 PD3~4    A8~A9  地址
; 		 PA0~7:   DATA总线复用
; 		 PD7:    ALE
; 		 PD6:    WE
; 		 PD5:    RE
; 下载:		   
; 		 PB4~7:  SPI通讯和下载端口
;          PD0~1:  UART通讯口
; 电机:
; 		 PD2:  外中断,电机脉冲
; */
; /********************************************************
;     广告屏程序第二次改版----主显示控制模块程序5.0
;                
; 			   1、程序采用模块化构架,提高了可读性
;                2、此程序支持第二套广告屏硬件
; 			   3、改动:显示屏部分用硬件SPI传输,大大的提高了系统传输速率.
; 			   4、增加和手机模块的M16的I2C数据通讯,SRAM的A16,A17改动.
;                创建时间:2004年11月23日
; 			   作者:西南科技大学 电子设计大赛第8大组
;                注意:需要包括 :<disp_key.h>
; 							   
; ********************************************************/
; 
; 
; /***************************************************
;             头文件申明
; ****************************************************/
; 
; #include<iom16v.h>
; #include<macros.h>
; #include"disp_key.h"
; 
	.dbline 48
; /************************************************
	sts _delay_time_count+1,R17
	sts _delay_time_count,R16
L2:
	.dbline 49
L3:
	.dbline 49
;             宏定义
	lds R2,_delay_time_count
	lds R3,_delay_time_count+1
	tst R2
	brne L2
	tst R3
	brne L2
X0:
	.dbline -2
	.dbline 50
; **************************************************/
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
; //RAM
; #define ALE  7                   //定义锁存脚
; #define WE   6                   //定义写允许位
	.dbline 54
; #define RE   5                   //定义读允许位
	in R24,0x18
	andi R24,253
	out 0x18,R24
	.dbline 55
; #define START   0X08             
	mov R16,R22
	xcall _send_data_disp
	.dbline 56
; #define MT_SLA_ACK  0X18
	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
; #define MT_DATA_ACK  0X28
	sbi 0x18,1
	.dbline -2
	.dbline 58
; #define MT_SLA_NACK  0x20
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
; #define MT_DATA_NACK  0x30
; 
	.dbline 62
; #pragma interrupt_handler exi_int0:2   	    //外部中断
; #pragma interrupt_handler timer1_vof:9   	//定时器1中断
	clr R20
	xjmp L10
L7:
	.dbline 63
; #pragma  interrupt_handler usart_rcx:12     //USART接受中断
	.dbline 64
; /************************************************
	mov R16,R22
	mov R17,R20
	xcall lsl8
	mov R24,R16
	andi R24,128
	brne L11
	.dbline 65
;             全局变量申明
	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
	.dbline 71
; int sys_cont =0;
; //显示缓冲区
; char DispTemp[8];
; 
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
; //按键处理
; 
; //数脉冲
	.dbline 75
; int PDataY =0;
	lds R24,_disp_key_count
	subi R24,255    ; addi 1
	sts _disp_key_count,R24
	.dbline 76
; int PDataYMax =152;
	ldi R24,7
	lds R2,_disp_key_count
	cp R24,R2
	brsh L14
	.dbline 77
; int PDataYMin =2;
	clr R2
	sts _disp_key_count,R2
L14:
	.dbline 78
; 
	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
; //UART接收数据
	sbic 0x16,0
	rjmp L16
	.dbline 80
; char FileEnd =1;
	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
	.dbline 83
; char HeadLoad =0;
; char HeadEN =1;
; int  DataIndex =0;
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
; int  FileLength =0;
; char Head[3];                        //头文件"LED"存储
	.dbline 88
; unsigned int time_out_ms=1; 		 //接收数据时限
; unsigned char time_out_s=0; 		 //试图通讯重新时限
; //I2C接受
	lds R20,_disp_code
	lds R21,_disp_code+1
	.dbline 89
; unsigned int I2C_TIME_OUT =0;
	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
	.dbline 91
; //特效处理
; char DispModel =0;
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
; int  ModelDelayTime =0;
; char ModelContJuge=0;
; /************************************************
	.dbline 96
;              函数申明
; **************************************************/
	clr R16
	.dbline 97
; //基本初始化
	clr R2
	lds R3,_key_delay
	cp R2,R3
	brsh L24
	.dbline 98
; void port_int(void);
	mov R24,R3
	subi R24,1
	sts _key_delay,R24
L24:
	.dbline 99
; void timer_int(void);
	clr R18
	xjmp L29
L26:
	.dbline 100
; void uart_int(void);
	.dbline 101
; void device_int(void);
	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
; void twi_init(void);
	.dbline 103
; 
	sts _new_key_num,R18
	.dbline 104
; //按键显示事件处理
	ldi R16,1
	.dbline 105
; void Display_event(void);        //显示事件
L30:
	.dbline 106
L27:
	.dbline 99
	inc R18
L29:
	.dbline 99
	ldi R24,7
	cp R24,R18
	brsh L26
	.dbline 107
; void KEY_event(void);            //按键事件处理
; 
	tst R16
	brne L32
	.dbline 108
; //特效处理
	ldi R24,15
	sts _new_key_num,R24
L32:
	.dbline 109
; void Disp_Model(void);           //屏幕显示特效模式
	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
; //外部RAM读写操作
	lds R24,_old_key_num
	cpi R24,15
	breq L36
	lds R3,_new_key_num
	cp R3,R24
	brne L36
	.dbline 112
; void data_store(char data);
	.dbline 113
; char RAM_Read(int adress);
	ldi R24,15
	sts _key_num,R24
	.dbline 114
; void RAM_Write(int adress,char data);
	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 Screen_send(void);
	.dbline 118
; 
	lds R24,_old_key_num
	cpi R24,15
	breq L38
	lds R24,_new_key_num
	cpi R24,15
	brne L38
	.dbline 119
; //i2c硬件通讯
	.dbline 120
; void twi_send(char data);
	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
; //SPI硬件通讯
	ldi R24,100
	sts _key_delay,R24
	.dbline 123
; void SPI_MasterInit(void);
L38:
	.dbline 124
; void SPI_MasterTransmit(char cData);
L37:
L35:
	.dbline 125
; 
	lds R2,_new_key_num
	sts _old_key_num,R2
	.dbline -2
	.dbline 126
; //UART收发数据
L23:
	.dbline 0 ; func end
	ret
	.dbsym r j 16 c
	.dbsym r i 18 c
	.dbend
	.area vector(rom, abs)
	.org 4
	jmp _exi_int0
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.area vector(rom, abs)
	.org 32
	jmp _timer1_vof
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.area vector(rom, abs)
	.org 44
	jmp _usart_rcx
	.area text(rom, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
	.area data(ram, con, rel)
	.dbfile C:\Documents and Settings\hu123\桌面\广告屏程序\写字库程序/disp_key.h
_sys_cont::
	.blkb 2
	.area idata
	.word 0

⌨️ 快捷键说明

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