📄 hd_support.lis
字号:
.module HD_Support.c
.area vector(rom, abs)
.org 26
001A 14C0 rjmp _Timer1_OVF_ISR
.org 48
0030 28C0 rjmp _TWR_ISR
.area text(rom, con, rel)
0000 .dbfile D:\实例17_I2C抢答器_从机程序\HD_Support.c
0000 .dbfunc e Device_INIT _Device_INIT fV
.even
0000 _Device_INIT::
0000 .dbline -1
0000 .dbline 85
0000 ; /***********************************************************
0000 ; * 函数库说明:底层硬件初始化函数库 *
0000 ; * 版本: *
0000 ; * 作者: *
0000 ; * 创建日期: *
0000 ; * -------------------------------------------------------- *
0000 ; * [硬件说明] *
0000 ; * 处理器: *
0000 ; * 系统时钟: *
0000 ; * -------------------------------------------------------- *
0000 ; * [支 持 库] *
0000 ; * 支持库名称:HD_Support.h *
0000 ; * 需要版本: ----- *
0000 ; * 支持库说明:底层硬件初始化声明库 *
0000 ; * *
0000 ; * 支持库名称:PF_Config.h *
0000 ; * 需要版本: ----- *
0000 ; * 支持库说明:硬件平台配置声明库 *
0000 ; * -------------------------------------------------------- *
0000 ; * [版本更新] *
0000 ; * 修改: *
0000 ; * 修改日期: *
0000 ; * 版本: *
0000 ; * -------------------------------------------------------- *
0000 ; * [版本历史] *
0000 ; * -------------------------------------------------------- *
0000 ; * [使用说明] *
0000 ; ***********************************************************/
0000 ;
0000 ; /********************
0000 ; * 头 文 件 配 置 区 *
0000 ; ********************/
0000 ; #include "PF_Config.h"
0000 ; #include "HD_Support.h"
0000 ;
0000 ; /********************
0000 ; * 系 统 宏 定 义 *
0000 ; ********************/
0000 ; #pragma interrupt_handler Timer1_OVF_ISR:iv_TIMER1_OVF
0000 ; #pragma interrupt_handler TWR_ISR:iv_TWI
0000 ;
0000 ; /*------------------*
0000 ; * 常 数 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /*------------------*
0000 ; * 动 作 宏 定 义 *
0000 ; *------------------*/
0000 ; #ifndef INSERT_TIMER1_OVF_ISR_CODE
0000 ; # define INSERT_TIMER1_OVF_ISR_CODE
0000 ; #endif
0000 ;
0000 ; /********************
0000 ; * 模块结构体定义区 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 函 数 声 明 区 *
0000 ; ********************/
0000 ; void Device_INIT(void);
0000 ;
0000 ; /********************
0000 ; * 模块函数声明区 *
0000 ; ********************/
0000 ; static void Port_INIT(void);
0000 ; static void Timer1_INIT(void);
0000 ; static void TWI_INIT(void);
0000 ;
0000 ; /********************
0000 ; * 模块变量声明区 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 全局变量声明区 *
0000 ; ********************/
0000 ;
0000 ;
0000 ; /***********************************************************
0000 ; * 函数说明:系统硬件初始化函数 *
0000 ; * 输入: 无 *
0000 ; * 输出: 无 *
0000 ; * 调用函数:Port_INIT() Timer0_INIT() *
0000 ; ***********************************************************/
0000 ; void Device_INIT(void)
0000 ; {
0000 .dbline 86
0000 ; Port_INIT();
0000 06D0 rcall _Port_INIT
0002 .dbline 87
0002 ; Timer1_INIT();
0002 06D0 rcall _Timer1_INIT
0004 .dbline 88
0004 ; TWI_INIT();
0004 16D0 rcall _TWI_INIT
0006 .dbline 91
0006 ; //*在这里添加其他初始化函数*//
0006 ;
0006 ; TIMSK1 = BIT(TOIE1); //启动定时期0溢出中断资源
0006 81E0 ldi R24,1
0008 80936F00 sts 111,R24
000C .dbline -2
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
000E .dbfunc s Port_INIT _Port_INIT fV
.even
000E _Port_INIT:
000E .dbline -1
000E .dbline 102
000E ; //*在这里添加其他全局寄存器的初始化代码*//
000E ; }
000E ;
000E ; /***********************************************************
000E ; * 函数说明:系统端口初始化函数 *
000E ; * 输入: 无 *
000E ; * 输出: 无 *
000E ; * 调用函数:无 *
000E ; ***********************************************************/
000E ; static void Port_INIT(void)
000E ; {
000E .dbline -2
000E L2:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc s Timer1_INIT _Timer1_INIT fV
.even
0010 _Timer1_INIT:
0010 .dbline -1
0010 .dbline 114
0010 ; //*在这里添加端口初始化代码*//
0010 ;
0010 ; }
0010 ;
0010 ; /***********************************************************
0010 ; * 函数声明:定时器1初始化函数 *
0010 ; * 输入: 无 *
0010 ; * 输出: 无 *
0010 ; * 调用函数:无 *
0010 ; ***********************************************************/
0010 ; static void Timer1_INIT(void)
0010 ; {
0010 .dbline 116
0010 ; //*在这里粘贴从代码生成向导中生成的初始化代码*//
0010 ; TCCR1B = 0x00;
0010 2224 clr R2
0012 20928100 sts 129,R2
0016 .dbline 117
0016 ; TCNT1H = 0xB3;
0016 83EB ldi R24,179
0018 80938500 sts 133,R24
001C .dbline 118
001C ; TCNT1L = 0xB5;
001C 85EB ldi R24,181
001E 80938400 sts 132,R24
0022 .dbline 119
0022 ; TCCR1A = 0x00;
0022 20928000 sts 128,R2
0026 .dbline -2
0026 L3:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e Timer1_OVF_ISR _Timer1_OVF_ISR fV
.even
0028 _Timer1_OVF_ISR::
0028 00D0 rcall push_lset
002A .dbline -1
002A .dbline 129
002A ; }
002A ;
002A ; /***********************************************************
002A ; * 函数声明:定时器1溢出中断处理程序 *
002A ; * 输入: 无 *
002A ; * 输出: 无 *
002A ; * 调用函数:INSERT_TIMER0_OVF_ISR_CODE *
002A ; ***********************************************************/
002A ; void Timer1_OVF_ISR(void)
002A ; {
002A .dbline 131
002A ; //*这里要添加对定时计数器重新设置计数底数的代码*//
002A ; INSERT_TIMER1_OVF_ISR_CODE
002A 7894 sei
002C .dbline 131
002C 00D0 rcall _Insert_Timer1_OVF_ISR_Code
002E .dbline -2
002E L4:
002E 00D0 rcall pop_lset
0030 .dbline 0 ; func end
0030 1895 reti
0032 .dbend
0032 .dbfunc s TWI_INIT _TWI_INIT fV
.even
0032 _TWI_INIT:
0032 .dbline -1
0032 .dbline 141
0032 ; }
0032 ;
0032 ; /***********************************************************
0032 ; * 函数说明:TWI初始化函数 *
0032 ; * 输入: 无 *
0032 ; * 输出: 无 *
0032 ; * 调用函数:无 *
0032 ; ***********************************************************/
0032 ; static void TWI_INIT(void)
0032 ; {
0032 .dbline 143
0032 ; //这里粘贴从代码生成向导中获得的初始化代码
0032 ; TWCR= 0x00; //初始化之前关闭TWI
0032 2224 clr R2
0034 2092BC00 sts 188,R2
0038 .dbline 144
0038 ; TWBR= 0xC8; //设置时钟位速率,TWI位速率为2.4k
0038 88EC ldi R24,200
003A 8093B800 sts 184,R24
003E .dbline 145
003E ; TWSR= 0x00; //设置预分频比为1
003E 2092B900 sts 185,R2
0042 .dbline 146
0042 ; TWAR= 0xF1; //当主机作为TWI从机接收数据时使用的地址
0042 81EF ldi R24,241
0044 8093BA00 sts 186,R24
0048 .dbline 147
0048 ; TWCR= 0x45; //允许应答,使能TWI,使能TWI中断
0048 85E4 ldi R24,69
004A 8093BC00 sts 188,R24
004E .dbline -2
004E L5:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbend
0050 .dbfunc e TWR_ISR _TWR_ISR fV
.even
0050 _TWR_ISR::
0050 00D0 rcall push_lset
0052 .dbline -1
0052 .dbline 157
0052 ; }
0052 ;
0052 ; /***********************************************************
0052 ; * 函数声明:TWI事件中断处理程序 *
0052 ; * 输入: 无 *
0052 ; * 输出: 无 *
0052 ; * 调用函数:INSERT_TWI_ISR_CODE *
0052 ; ***********************************************************/
0052 ; void TWR_ISR(void)
0052 ; {
0052 .dbline 159
0052 ; //*这里要添加对定时计数器重新设置计数底数的代码*//
0052 ; INSERT_TWI_ISR_CODE
0052 00D0 rcall _Insert_TWI_ISR_Code
0054 .dbline -2
0054 L6:
0054 00D0 rcall pop_lset
0056 .dbline 0 ; func end
0056 1895 reti
0058 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -