📄 1stimer1.lis
字号:
.module _1STimer1.c
.area text(rom, con, rel)
0000 .dbfile E:\微雪电子CD1\产品资料\开发板实验板\SMK系列\SMK1632\实验教程\内核及主板相关实验\内核-TIMER\1STimer1\1STimer1.c
0000 .dbfunc e timer1_init _timer1_init fV
.even
0000 _timer1_init::
0000 .dbline -1
0000 .dbline 54
0000 ; /*********************************************************************
0000 ; 微 雪 电 子 WaveShare http://www.waveShare.net
0000 ;
0000 ; 目 的: 建立使用Timer1做1S定时的示例程序
0000 ;
0000 ; 目标系统: 基于AVR单片机
0000 ;
0000 ; 应用软件: ICCAVR
0000 ;
0000 ; 版 本: Version 1.0
0000 ;
0000 ; 圆版时间: 2005-06-25
0000 ;
0000 ; 开发人员: SEE
0000 ;
0000 ; 说 明: 若用于商业用途,请保留此段文字或注明代码来源
0000 ;
0000 ; 深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权
0000 ; *********************************************************************/
0000 ;
0000 ; /*01010101010101010101010101010101010101010101010101010101010101010101
0000 ; ---------------------------------------------------------------------
0000 ; 版本更新记录:
0000 ;
0000 ; ----------------------------------------------------------------------
0000 ; 实验内容:
0000 ; 使用TIMER1做1S定时,并使用PD口的LED指示灯做指示。
0000 ; ----------------------------------------------------------------------
0000 ; 硬件连接:
0000 ; 将PD口的LED指示灯使能开关切换到"ON"状态。
0000 ; ----------------------------------------------------------------------
0000 ; 注意事项:
0000 ; (1)若有加载库函数,请将光盘根目录下的“库函数”下的“ICC_H”文件夹拷到D盘
0000 ; (2)请详细阅读:光盘根目录下的“产品资料\开发板实验板\SMK系列\SMK1632\说明资料”
0000 ;
0000 ; ----------------------------------------------------------------------
0000 ; 10101010101010101010101010101010101010101010101010101010101010101010*/
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define DISP_DDR DDRD
0000 ; #define DISP_PORT PORTD
0000 ;
0000 ; /*--------------------------------------------------------------------
0000 ; 函数名称:
0000 ; 函数功能:
0000 ; 注意事项:
0000 ; 提示说明:
0000 ; 输 入:
0000 ; 返 回:
0000 ; --------------------------------------------------------------------*/
0000 ; void timer1_init(void)
0000 ; {
0000 .dbline 55
0000 ; TCCR1B = 0x00; //stop timer
0000 2224 clr R2
0002 2EBC out 0x2e,R2
0004 .dbline 57
0004 ;
0004 ; TCNT1H = 0xE3; //设置 TC1 的 计数寄存器 高8位值
0004 83EE ldi R24,227
0006 8DBD out 0x2d,R24
0008 .dbline 58
0008 ; TCNT1L = 0xE1; //设置 TC1 的 计数寄存器 低8位值
0008 81EE ldi R24,225
000A 8CBD out 0x2c,R24
000C .dbline 69
000C ;
000C ; //OCR1AH = 0x1C; //设置 TC1 的 输出比较寄存器A 高8位值
000C ; //OCR1AL = 0x20; //设置 TC1 的 输出比较寄存器A 低8位值
000C ;
000C ; //OCR1BH = 0x1C; //设置 TC1 的 输出比较寄存器B 高8位值
000C ; //OCR1BL = 0x20; //设置 TC1 的 输出比较寄存器B 低8位值
000C ;
000C ; //ICR1H = 0x1C; //设置 TC1 的 输入捕获寄存器 高8位值
000C ; //ICR1L = 0x20; //设置 TC1 的 输入捕获寄存器 低8位值
000C ;
000C ; TCCR1A = 0x00;
000C 2FBC out 0x2f,R2
000E .dbline 70
000E ; TCCR1B = 0x05; //设置TC1 为 CLK/1024分频,启动TC1
000E 85E0 ldi R24,5
0010 8EBD out 0x2e,R24
0012 .dbline 72
0012 ;
0012 ; MCUCR = 0x00; //设置 MCU 的 控制寄存器
0012 25BE out 0x35,R2
0014 .dbline 73
0014 ; GICR = 0x00; //设置 中断控制寄存器
0014 2BBE out 0x3b,R2
0016 .dbline 74
0016 ; TIMSK = 0x04; //设置 定时计数器 的 屏蔽寄存器
0016 84E0 ldi R24,4
0018 89BF out 0x39,R24
001A .dbline -2
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
.area vector(rom, abs)
.org 32
0020 0C940E00 jmp _timer1_ovf_isr
.area text(rom, con, rel)
001C .dbfile E:\微雪电子CD1\产品资料\开发板实验板\SMK系列\SMK1632\实验教程\内核及主板相关实验\内核-TIMER\1STimer1\1STimer1.c
001C .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
001C _timer1_ovf_isr::
001C 8A93 st -y,R24
001E 9A93 st -y,R25
0020 8FB7 in R24,0x3f
0022 8A93 st -y,R24
0024 .dbline -1
0024 .dbline 87
0024 ; //SEI(); //enable interrupts
0024 ; }
0024 ; /*--------------------------------------------------------------------
0024 ; 函数名称:
0024 ; 函数功能:
0024 ; 注意事项:
0024 ; 提示说明:
0024 ; 输 入:
0024 ; 返 回:
0024 ; --------------------------------------------------------------------*/
0024 ; #pragma interrupt_handler timer1_ovf_isr:9
0024 ; void timer1_ovf_isr(void)
0024 ; {
0024 .dbline 88
0024 ; TCNT1H = 0xE3; //reload counter high value
0024 83EE ldi R24,227
0026 8DBD out 0x2d,R24
0028 .dbline 89
0028 ; TCNT1L = 0xE1; //reload counter low value
0028 81EE ldi R24,225
002A 8CBD out 0x2c,R24
002C .dbline 90
002C ; DISP_PORT++;
002C 82B3 in R24,0x12
002E 8F5F subi R24,255 ; addi 1
0030 82BB out 0x12,R24
0032 .dbline -2
0032 L2:
0032 8991 ld R24,y+
0034 8FBF out 0x3f,R24
0036 9991 ld R25,y+
0038 8991 ld R24,y+
003A .dbline 0 ; func end
003A 1895 reti
003C .dbend
003C .dbfunc e main _main fV
.even
003C _main::
003C .dbline -1
003C .dbline 101
003C ; }
003C ; /*--------------------------------------------------------------------
003C ; 函数名称:
003C ; 函数功能:
003C ; 注意事项:
003C ; 提示说明:
003C ; 输 入:
003C ; 返 回:
003C ; --------------------------------------------------------------------*/
003C ; void main(void)
003C ; {
003C .dbline 102
003C ; DISP_DDR = 0XFF;
003C 8FEF ldi R24,255
003E 81BB out 0x11,R24
0040 .dbline 103
0040 ; timer1_init();
0040 DFDF xcall _timer1_init
0042 .dbline 104
0042 ; SEI();
0042 7894 sei
0044 L4:
0044 .dbline 105
0044 L5:
0044 .dbline 105
0044 FFCF xjmp L4
0046 X0:
0046 .dbline -2
0046 L3:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -