📄 hd_support.lis
字号:
.module HD_Support.c
.area vector(rom, abs)
.org 32
0020 1AC0 rjmp _Timer0_OVF_ISR
.area text(rom, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\HD_Support.c
0000 .dbfunc e Device_INIT _Device_INIT fV
.even
0000 _Device_INIT::
0000 .dbline -1
0000 .dbline 84
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 ; # include "KeyDis_Drv.h"
0000 ;
0000 ; /********************
0000 ; * 系 统 宏 定 义 *
0000 ; ********************/
0000 ; #pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
0000 ;
0000 ; /*------------------*
0000 ; * 常 数 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /*------------------*
0000 ; * 动 作 宏 定 义 *
0000 ; *------------------*/
0000 ; #ifndef INSERT_TIMER0_OVF_ISR_CODE
0000 ; # define INSERT_TIMER0_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 Timer0_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 85
0000 ; Port_INIT();
0000 06D0 rcall _Port_INIT
0002 .dbline 86
0002 ; Timer0_INIT();
0002 10D0 rcall _Timer0_INIT
0004 .dbline 88
0004 ; //*在这里添加其他初始化函数*//
0004 ; SPI_INIT();
0004 00D0 rcall _SPI_INIT
0006 .dbline 90
0006 ;
0006 ; TIMSK0 = BIT(TOIE0); //启动定时器0溢出中断资源
0006 81E0 ldi R24,1
0008 80936E00 sts 110,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 101
000E ; //*在这里添加其他全局寄存器的初始化代码*//
000E ; }
000E ;
000E ; /***********************************************************
000E ; * 函数说明:系统端口初始化函数 *
000E ; * 输入: 无 *
000E ; * 输出: 无 *
000E ; * 调用函数:无 *
000E ; ***********************************************************/
000E ; static void Port_INIT(void)
000E ; {
000E .dbline 103
000E ; //*在这里添加端口初始化代码*//
000E ; PORTB = 0b11111111; //MOSI,#SS,CLK端均设置为高电平,MISO端开启内部上拉
000E 8FEF ldi R24,255
0010 85B9 out 0x5,R24
0012 .dbline 104
0012 ; PORTC = 0b11111111;
0012 88B9 out 0x8,R24
0014 .dbline 105
0014 ; PORTD = 0b11111111;
0014 8BB9 out 0xb,R24
0016 .dbline 107
0016 ;
0016 ; DDRB = 0b00101100;
0016 8CE2 ldi R24,44
0018 84B9 out 0x4,R24
001A .dbline 108
001A ; DDRC = 0b00111111;
001A 8FE3 ldi R24,63
001C 87B9 out 0x7,R24
001E .dbline 109
001E ; DDRD = 0b00000000;
001E 2224 clr R2
0020 2AB8 out 0xa,R2
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc s Timer0_INIT _Timer0_INIT fV
.even
0024 _Timer0_INIT:
0024 .dbline -1
0024 .dbline 119
0024 ; }
0024 ;
0024 ; /***********************************************************
0024 ; * 函数声明:定时器0初始化函数 *
0024 ; * 输入: 无 *
0024 ; * 输出: 无 *
0024 ; * 调用函数:无 *
0024 ; ***********************************************************/
0024 ; static void Timer0_INIT(void)
0024 ; {
0024 .dbline 122
0024 ; //*在这里粘贴从代码生成向导中生成的初始化代码*//
0024 ; //*要求为1K的溢出中断 *//
0024 ; TCCR0B = 0x00;
0024 2224 clr R2
0026 25BC out 0x25,R2
0028 .dbline 123
0028 ; TCNT0 = 0x83; //计数初值
0028 83E8 ldi R24,131
002A 86BD out 0x26,R24
002C .dbline 124
002C ; TCCR0A = 0x00;
002C 24BC out 0x24,R2
002E .dbline 125
002E ; TCCR0B = 0x02; //8分频
002E 82E0 ldi R24,2
0030 85BD out 0x25,R24
0032 .dbline -2
0032 L3:
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbend
0034 .dbfunc e Timer0_OVF_ISR _Timer0_OVF_ISR fV
.even
0034 _Timer0_OVF_ISR::
0034 00D0 rcall push_lset
0036 .dbline -1
0036 .dbline 135
0036 ; }
0036 ;
0036 ; /***********************************************************
0036 ; * 函数声明:定时器0溢出中断处理程序 *
0036 ; * 输入: 无 *
0036 ; * 输出: 无 *
0036 ; * 调用函数:INSERT_TIMER0_OVF_ISR_CODE *
0036 ; ***********************************************************/
0036 ; void Timer0_OVF_ISR(void)
0036 ; {
0036 .dbline 137
0036 ; //*这里要添加对定时计数器重新设置计数底数的代码*//
0036 ; INSERT_TIMER0_OVF_ISR_CODE
0036 7894 sei
0038 .dbline 137
0038 00D0 rcall _Insert_Timer0_OVF_ISR_Code
003A .dbline -2
003A L4:
003A 00D0 rcall pop_lset
003C .dbline 0 ; func end
003C 1895 reti
003E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -