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

📄 main.lis

📁 用AVR单片机做的一些程序,包括跑马灯显示,PWM产生,ADC转换等
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
 0000                   .dbfunc e t1_init _t1_init fV
                        .even
 0000           _t1_init::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; /*
 0000           ; 实验七:
 0000           ;       定时器T1中断实验。
 0000           ;       1、定时器中断实验。定时器产生10mS周期中断,通过计数让PB0电平产生周期变化。
 0000           ;       2、内部1 M晶振。
 0000           ;       3、进行此实验请插上LED短路块。
 0000           ;       4、此实验使用定时器的溢出中断方式,为定时器的最基本方式。
 0000           ; 
 0000           ;       AVR  mega128学习板 阿发
 0000           ;       www.iccavr.com
 0000           ;       2:15 2007-10-11
 0000           ; */
 0000           ; 
 0000           ; #include "iom128v.h"
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; /*初始化定时器,产生10mS周期中断*/
 0000           ; void t1_init(void) {
 0000                   .dbline 20
 0000           ;       
 0000           ;       OCR1A = 1250;                                                                           /*计数周期为10mS,F=1M*/
 0000 82EE              ldi R24,1250
 0002 94E0              ldi R25,4
 0004 9BBD              out 0x2b,R25
 0006 8ABD              out 0x2a,R24
 0008                   .dbline 21
 0008           ;       TIMSK |= (1 << OCIE1A);                                                         /*比较中断A允许*/
 0008 87B7              in R24,0x37
 000A 8061              ori R24,16
 000C 87BF              out 0x37,R24
 000E                   .dbline 22
 000E           ;       TCCR1A = 0x00;
 000E 2224              clr R2
 0010 2FBC              out 0x2f,R2
 0012                   .dbline 23
 0012           ;       TCCR1B = (1 << WGM12);                                                          /*定时器工作在CTC计数器模式*/
 0012 88E0              ldi R24,8
 0014 8EBD              out 0x2e,R24
 0016                   .dbline 24
 0016           ;       TCCR1B |= (1 << CS11);                                                          /*设置定时器的分频值为8分频*/
 0016 8EB5              in R24,0x2e
 0018 8260              ori R24,2
 001A 8EBD              out 0x2e,R24
 001C                   .dbline -2
 001C           L1:
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbend
 001E                   .dbfunc e io_init _io_init fV
                        .even
 001E           _io_init::
 001E                   .dbline -1
 001E                   .dbline 28
 001E           ; }
 001E           ; 
 001E           ; /*IO口初始化函数*/
 001E           ; void io_init(void) {
 001E                   .dbline 30
 001E           ; 
 001E           ;       DDRA = 0x00;                                                                            /*方向输入*/
 001E 2224              clr R2
 0020 2ABA              out 0x1a,R2
 0022                   .dbline 31
 0022           ;       PORTA = 0xFF;                                                                           /*打开上拉*/
 0022 8FEF              ldi R24,255
 0024 8BBB              out 0x1b,R24
 0026                   .dbline 32
 0026           ;       DDRB = 0xFF;                                                                            /*方向输出*/
 0026 87BB              out 0x17,R24
 0028                   .dbline 33
 0028           ;       PORTB = 0xFF;                                                                           /*输出高电平*/
 0028 88BB              out 0x18,R24
 002A                   .dbline 34
 002A           ;       DDRC = 0x00;                                                                            /*不用的IO口建议设置为输入带上拉*/
 002A 24BA              out 0x14,R2
 002C                   .dbline 35
 002C           ;       PORTC = 0xFF;
 002C 85BB              out 0x15,R24
 002E                   .dbline 36
 002E           ;       DDRD = 0x00;
 002E 21BA              out 0x11,R2
 0030                   .dbline 37
 0030           ;       PORTD = 0xFF;
 0030 82BB              out 0x12,R24
 0032                   .dbline 38
 0032           ;       DDRE = 0x00;
 0032 22B8              out 0x2,R2
 0034                   .dbline 39
 0034           ;       PORTE = 0xFF;
 0034 83B9              out 0x3,R24
 0036                   .dbline 40
 0036           ;       DDRF = 0x00;
 0036 20926100          sts 97,R2
 003A                   .dbline 41
 003A           ;       PORTF = 0xFF;
 003A 80936200          sts 98,R24
 003E                   .dbline 42
 003E           ;       DDRG = 0x00;
 003E 20926400          sts 100,R2
 0042                   .dbline 43
 0042           ;       PORTG = 0xFF;
 0042 80936500          sts 101,R24
 0046                   .dbline -2
 0046           L2:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbend
 0048                   .dbfunc e main _main fV
                        .even
 0048           _main::
 0048                   .dbline -1
 0048                   .dbline 46
 0048           ; }
 0048           ; 
 0048           ; void main(void) {
 0048                   .dbline 48
 0048           ; 
 0048           ;       io_init();
 0048 EADF              xcall _io_init
 004A                   .dbline 49
 004A           ;       t1_init();
 004A DADF              xcall _t1_init
 004C                   .dbline 50
 004C           ;       SEI();                                                                                          /*全局中断使能*/
 004C 7894              sei
 004E           L4:
 004E                   .dbline 52
 004E           L5:
 004E                   .dbline 52
 004E FFCF              xjmp L4
 0050           X0:
 0050                   .dbline -2
 0050           L3:
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbend
                        .area vector(rom, abs)
                        .org 48
 0030 0C942900          jmp _Int_TCCR1A
                        .area text(rom, con, rel)
 0052                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
 0000           L8:
 0000                   .blkb 1
                        .area text(rom, con, rel)
 0052                   .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
 0052                   .dbfunc e Int_TCCR1A _Int_TCCR1A fV
 0052                   .dbsym s i L8 c
                        .even
 0052           _Int_TCCR1A::
 0052 2A92              st -y,R2
 0054 8A93              st -y,R24
 0056 9A93              st -y,R25
 0058 2FB6              in R2,0x3f
 005A 2A92              st -y,R2
 005C                   .dbline -1
 005C                   .dbline 57
 005C                   .dbline 61
 005C 80910000          lds R24,L8
 0060 8F5F              subi R24,255    ; addi 1
 0062 80930000          sts L8,R24
 0066                   .dbline 62
 0066 84E6              ldi R24,100
 0068 20900000          lds R2,L8
 006C 8215              cp R24,R2
 006E 38F4              brsh L9
 0070                   .dbline 62
 0070                   .dbline 63
 0070 81E0              ldi R24,1
 0072 28B2              in R2,0x18
 0074 2826              eor R2,R24
 0076 28BA              out 0x18,R2
 0078                   .dbline 64
 0078 2224              clr R2
 007A 20920000          sts L8,R2
 007E                   .dbline 65
 007E           L9:
 007E                   .dbline -2
 007E           L7:
 007E 2990              ld R2,y+
 0080 2FBE              out 0x3f,R2
 0082 9991              ld R25,y+
 0084 8991              ld R24,y+
 0086 2990              ld R2,y+
 0088                   .dbline 0 ; func end
 0088 1895              reti
 008A                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -