📄 display_board2.1.s
字号:
.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 + -