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

📄 hd_support.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 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 + -