📄 键盘显示模块.lst
字号:
__text_start:
__start:
0029 EFCF LDI R28,0xFF
002A E0D2 LDI R29,2
002B BFCD OUT 0x3D,R28
002C BFDE OUT 0x3E,R29
002D 52C0 SUBI R28,0x20
002E 40D0 SBCI R29,0
002F EA0A LDI R16,0xAA
0030 8308 STD Y+0,R16
0031 2400 CLR R0
0032 E0E6 LDI R30,6
0033 E0F1 LDI R31,1
0034 E011 LDI R17,1
0035 31E3 CPI R30,0x13
0036 07F1 CPC R31,R17
0037 F011 BEQ 0x003A
0038 9201 ST R0,Z+
0039 CFFB RJMP 0x0035
003A 8300 STD Z+0,R16
003B E4EB LDI R30,0x4B
003C E0F0 LDI R31,0
003D E0A0 LDI R26,0
003E E0B1 LDI R27,1
003F E010 LDI R17,0
0040 35E1 CPI R30,0x51
0041 07F1 CPC R31,R17
0042 F021 BEQ 0x0047
0043 95C8 LPM
0044 9631 ADIW R30,1
0045 920D ST R0,X+
0046 CFF9 RJMP 0x0040
0047 D07D RCALL _main
_exit:
0048 CFFF RJMP _exit
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-显示驱动测试\EX_Support.c
(0001) /***********************************************************
(0002) * 函数库说明:底层硬件初始化驱动函数库 *
(0003) * 版本: *
(0004) * 作者: *
(0005) * 创建日期: *
(0006) * -------------------------------------------------------- *
(0007) * [硬件说明] *
(0008) * 处理器: *
(0009) * 系统时钟: *
(0010) * -------------------------------------------------------- *
(0011) * [支 持 库] *
(0012) * 支持库名称:HD_Support.h *
(0013) * 需要版本: ----- *
(0014) * 支持库说明:底层硬件初始化声明库 *
(0015) * *
(0016) * 支持库名称:EX_Support.h *
(0017) * 需要版本: ----- *
(0018) * 支持库说明:底层硬件初始化驱动声明库 *
(0019) * *
(0020) * 支持库名称:PF_Config.h *
(0021) * 需要版本: ----- *
(0022) * 支持库说明:硬件平台配置声明库 *
(0023) * -------------------------------------------------------- *
(0024) * [版本更新] *
(0025) * 修改: *
(0026) * 修改日期: *
(0027) * 版本: *
(0028) * -------------------------------------------------------- *
(0029) * [版本历史] *
(0030) * -------------------------------------------------------- *
(0031) * [使用说明] *
(0032) ***********************************************************/
(0033)
(0034) /********************
(0035) * 头 文 件 配 置 区 *
(0036) ********************/
(0037) # include "PF_Config.h"
(0038) # include "HD_Support.h"
(0039) # include "EX_Support.h"
(0040)
(0041)
(0042) /********************
(0043) * 系 统 宏 定 义 *
(0044) ********************/
(0045)
(0046) /*------------------*
(0047) * 常 数 宏 定 义 *
(0048) *------------------*/
(0049)
(0050) /*------------------*
(0051) * 动 作 宏 定 义 *
(0052) *------------------*/
(0053)
(0054) /********************
(0055) * 模块结构体定义区 *
(0056) ********************/
(0057)
(0058) /********************
(0059) * 函 数 声 明 区 *
(0060) ********************/
(0061) void System_INIT(void);
(0062) void Delay_MS(uint16 wTime);
(0063) void Insert_Timer0_OVF_ISR_Code(void);
(0064)
(0065) /********************
(0066) * 模块函数声明区 *
(0067) ********************/
(0068) static void Driver_INIT(void);
(0069)
(0070) /********************
(0071) * 模块变量声明区 *
(0072) ********************/
(0073) static uint16 s_wSystemDelayTimerCounter = 0;
(0074)
(0075) /********************
(0076) * 全局变量声明区 *
(0077) ********************/
(0078) unsigned char PORTA; //虚拟的输出端口在内存中对应的缓冲区
(0079) unsigned char PINE; //虚拟的输入端口在内存中对应的缓冲区
(0080) BOOL DoTime = FALSE;
(0081) uint16 g_wSystemTimer = 0;
(0082)
(0083) /***********************************************************
(0084) * 函数说明:软件驱动初始化函数 *
(0085) * 输入: 无 *
(0086) * 输出: 无 *
(0087) * 调用函数:无 *
(0088) ***********************************************************/
(0089) static void Driver_INIT(void)
(0090) {
_Driver_INIT:
0049 9508 RET
(0091) //*在这里插入你的各类软件驱动初始化代码*//
(0092) }
(0093)
(0094) /***********************************************************
(0095) * 函数说明:系统初始化函数 *
(0096) * 输入: 无 *
(0097) * 输出: 无 *
(0098) * 调用函数:Device_INIT() Driver_INIT() *
(0099) ***********************************************************/
(0100) void System_INIT(void)
(0101) {
(0102) CLI();
_System_INIT:
004A 94F8 BCLR 7
(0103)
(0104) Device_INIT();
004B D01C RCALL _Device_INIT
(0105) Driver_INIT();
004C DFFC RCALL _Driver_INIT
(0106)
(0107) //*在这里插入你的系统环境变量初始化代码*//
(0108)
(0109) SEI();
004D 9478 BSET 7
004E 9508 RET
(0110) }
(0111)
(0112) /***********************************************************
(0113) * 函数说明:定时器0中断处理程序代码插入函数 *
(0114) * 输入: 无 *
(0115) * 输出: 无 *
(0116) * 调用函数:无 *
(0117) ***********************************************************/
(0118) void Insert_Timer0_OVF_ISR_Code (void)
(0119) {
(0120) TCNT0 = 0x83; //重载定时器
_Insert_Timer0_OVF_ISR_Code:
004F E883 LDI R24,0x83
0050 BD86 OUT 0x26,R24
(0121)
(0122) g_wSystemTimer++; //时标产生,以1秒为周期循环时标
0051 91800103 LDS R24,g_wSystemTimer
0053 91900104 LDS R25,g_wSystemTimer+1
0055 9601 ADIW R24,1
0056 93900104 STS g_wSystemTimer+1,R25
0058 93800103 STS g_wSystemTimer,R24
(0123)
(0124) if (g_wSystemTimer >= TimeStampMax)
005A 3E88 CPI R24,0xE8
005B E0E3 LDI R30,3
005C 079E CPC R25,R30
005D F030 BCS 0x0064
(0125) g_wSystemTimer = 0;
005E 2422 CLR R2
005F 2433 CLR R3
0060 92300104 STS g_wSystemTimer+1,R3
0062 92200103 STS g_wSystemTimer,R2
(0126)
(0127) DoTime = TRUE; //端口刷新与闪烁控制标志
0064 E081 LDI R24,1
0065 93800102 STS DoTime,R24
0067 9508 RET
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-显示驱动测试\HD_Support.c
(0001) /***********************************************************
(0002) * 函数库说明:底层硬件初始化函数库 *
(0003) * 版本: *
(0004) * 作者: *
(0005) * 创建日期: *
(0006) * -------------------------------------------------------- *
(0007) * [硬件说明] *
(0008) * 处理器: *
(0009) * 系统时钟: *
(0010) * -------------------------------------------------------- *
(0011) * [支 持 库] *
(0012) * 支持库名称:HD_Support.h *
(0013) * 需要版本: ----- *
(0014) * 支持库说明:底层硬件初始化声明库 *
(0015) * *
(0016) * 支持库名称:PF_Config.h *
(0017) * 需要版本: ----- *
(0018) * 支持库说明:硬件平台配置声明库 *
(0019) * -------------------------------------------------------- *
(0020) * [版本更新] *
(0021) * 修改: *
(0022) * 修改日期: *
(0023) * 版本: *
(0024) * -------------------------------------------------------- *
(0025) * [版本历史] *
(0026) * -------------------------------------------------------- *
(0027) * [使用说明] *
(0028) ***********************************************************/
(0029)
(0030) /********************
(0031) * 头 文 件 配 置 区 *
(0032) ********************/
(0033) # include "PF_Config.h"
(0034) # include "HD_Support.h"
(0035)
(0036) /********************
(0037) * 系 统 宏 定 义 *
(0038) ********************/
(0039) #pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
(0040)
(0041) /*------------------*
(0042) * 常 数 宏 定 义 *
(0043) *------------------*/
(0044)
(0045) /*------------------*
(0046) * 动 作 宏 定 义 *
(0047) *------------------*/
(0048) #ifndef INSERT_TIMER0_OVF_ISR_CODE
(0049) # define INSERT_TIMER0_OVF_ISR_CODE
(0050) #endif
(0051)
(0052) /********************
(0053) * 模块结构体定义区 *
(0054) ********************/
(0055)
(0056) /********************
(0057) * 函 数 声 明 区 *
(0058) ********************/
(0059) void Device_INIT(void);
(0060)
(0061) /********************
(0062) * 模块函数声明区 *
(0063) ********************/
(0064) static void Port_INIT(void);
(0065) static void Timer0_INIT(void);
(0066) static void SPI_INIT(void);
(0067)
(0068) /********************
(0069) * 模块变量声明区 *
(0070) ********************/
(0071)
(0072) /********************
(0073) * 全局变量声明区 *
(0074) ********************/
(0075)
(0076)
(0077) /***********************************************************
(0078) * 函数说明:系统硬件初始化函数 *
(0079) * 输入: 无 *
(0080) * 输出: 无 *
(0081) * 调用函数:Port_INIT() Timer0_INIT() *
(0082) ***********************************************************/
(0083) void Device_INIT(void)
(0084) {
(0085) Port_INIT();
_Device_INIT:
0068 D006 RCALL _Port_INIT
(0086) Timer0_INIT();
0069 D010 RCALL _Timer0_INIT
(0087) //*在这里添加其他初始化函数*//
(0088) SPI_INIT();
006A D01C RCALL _SPI_INIT
(0089)
(0090) TIMSK0 = BIT(TOIE0); //启动定时器0溢出中断资源
006B E081 LDI R24,1
006C 9380006E STS 0x6E,R24
006E 9508 RET
(0091) //*在这里添加其他全局寄存器的初始化代码*//
(0092) }
(0093)
(0094) /***********************************************************
(0095) * 函数说明:系统端口初始化函数 *
(0096) * 输入: 无 *
(0097) * 输出: 无 *
(0098) * 调用函数:无 *
(0099) ***********************************************************/
(0100) static void Port_INIT(void)
(0101) {
(0102) //*在这里添加端口初始化代码*//
(0103) PORTB = 0b11111111; //MOSI,#SS,CLK端均设置为高电平,MISO端开启内部上拉
_Port_INIT:
006F EF8F LDI R24,0xFF
0070 B985 OUT 0x05,R24
(0104) PORTC = 0b11111111;
0071 B988 OUT 0x08,R24
(0105) PORTD = 0b11111111;
0072 B98B OUT 0x0B,R24
(0106)
(0107) DDRB = 0b00101100;
0073 E28C LDI R24,0x2C
0074 B984 OUT 0x04,R24
(0108) DDRC = 0b00100000;
0075 E280 LDI R24,0x20
0076 B987 OUT 0x07,R24
(0109) DDRD = 0b00000000;
0077 2422 CLR R2
0078 B82A OUT 0x0A,R2
0079 9508 RET
(0110) }
(0111)
(0112) /***********************************************************
(0113) * 函数声明:定时器0初始化函数 *
(0114) * 输入: 无 *
(0115) * 输出: 无 *
(0116) * 调用函数:无 *
(0117) ***********************************************************/
(0118) static void Timer0_INIT(void)
(0119) {
(0120) //*在这里粘贴从代码生成向导中生成的初始化代码*//
(0121) //*要求为1K的溢出中断 *//
(0122) TCCR0B = 0x00;
_Timer0_INIT:
007A 2422 CLR R2
007B BC25 OUT 0x25,R2
(0123) TCNT0 = 0x83; //计数初值
007C E883 LDI R24,0x83
007D BD86 OUT 0x26,R24
(0124) TCCR0A = 0x00;
007E BC24 OUT 0x24,R2
(0125) TCCR0B = 0x02; //8分频
007F E082 LDI R24,2
0080 BD85 OUT 0x25,R24
0081 9508 RET
_Timer0_OVF_ISR:
0082 D0A2 RCALL push_lset
(0126) }
(0127)
(0128) /***********************************************************
(0129) * 函数声明:定时器0溢出中断处理程序 *
(0130) * 输入: 无 *
(0131) * 输出: 无 *
(0132) * 调用函数:INSERT_TIMER0_OVF_ISR_CODE *
(0133) ***********************************************************/
(0134) void Timer0_OVF_ISR(void)
(0135) {
(0136) //*这里要添加对定时计数器重新设置计数底数的代码*//
(0137) INSERT_TIMER0_OVF_ISR_CODE
0083 9478 BSET 7
0084 DFCA RCALL _Insert_Timer0_OVF_ISR_Code
0085 D0B6 RCALL pop_lset
0086 9518 RETI
(0138) }
(0139)
(0140) /***********************************************************
(0141) * 函数声明:SPI初始化程序 *
(0142) * 输入: 无 *
(0143) * 输出: 无 *
(0144) * 调用函数:无 *
(0145) ***********************************************************/
(0146)
(0147) static void SPI_INIT (void)
(0148) {
(0149) SPCR = 0x7D; //禁止SPI中断,使能SPI模块,LSB先传送,选择主机模式,空闲时时钟为高,时钟结束沿采样,时钟频率64分频
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -