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

📄 main.lis

📁 AVR基本外设测试程序
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\avr3\main.c
 0000                   .dbfunc e main _main fV
 0000           ;              x -> R20
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ;  #include"main.h"
 0000           ;  extern void keysy(void);
 0000           ;   
 0000           ;  
 0000           ; /*===============主函数部分===================*/ 
 0000           ; void main(void)
 0000           ; {  
 0000                   .dbline 20
 0000 4427              clr R20
 0002 09C0              rjmp L5
 0004           L2:
 0004                   .dbline 20
 0004 80E0              ldi R24,<_LCD
 0006 90E0              ldi R25,>_LCD
 0008 E42F              mov R30,R20
 000A FF27              clr R31
 000C E80F              add R30,R24
 000E F91F              adc R31,R25
 0010 8FEF              ldi R24,255
 0012 8083              std z+0,R24
 0014           L3:
 0014                   .dbline 20
 0014 4395              inc R20
 0016           L5:
 0016                   .dbline 20
 0016           ; //   unsigned int i;
 0016           ;    unsigned char x ;
 0016           ;    /*===============初始化函数============*/
 0016           ;   // init_1622();
 0016           ;   /*
 0016           ;   ======================================
 0016           ;   采用定时器管理
 0016           ;   定时器0预分频系数为1024,定时时间为1.25MS
 0016           ;   初值为=256-1.25*14.7456*1000000/1024/1000=238
 0016           ;   首先要开启定时器0,
 0016           ;   =========================================
 0016           ;   */
 0016           ;   for(x=0;x<23;x++)  LCD[x]=0XFF;
 0016 4731              cpi R20,23
 0018 A8F3              brlo L2
 001A                   .dbline 22
 001A           ;     
 001A           ;   TCCR0=0X05;   //预分频系数为1024   0000 0101
 001A 85E0              ldi R24,5
 001C 83BF              out 0x33,R24
 001E                   .dbline 23
 001E           ;   TCNT0=0XEE;   //238              
 001E 8EEE              ldi R24,238
 0020 82BF              out 0x32,R24
 0022                   .dbline 24
 0022           ;   TIMSK|=0X01;  //使能T/C0中断,允许中断
 0022 89B7              in R24,0x39
 0024 8160              ori R24,1
 0026 89BF              out 0x39,R24
 0028                   .dbline 26
 0028           ; 
 0028           ;   DDRD&=0XF3;   //PIND2 PIND3设为输入
 0028 81B3              in R24,0x11
 002A 837F              andi R24,243
 002C 81BB              out 0x11,R24
 002E                   .dbline 27
 002E           ;   MCUCR=0X08; //00001000下降沿触发中断、GICR
 002E 88E0              ldi R24,8
 0030 85BF              out 0x35,R24
 0032                   .dbline 35
 0032           ;                 //ISC11,ISC10 INT1下降沿          
 0032           ;   
 0032           ;   /*========PB2输出PWM信号WGM[3;0]=1011
 0032           ;     ========加一计数中比较匹配时清零OC1B
 0032           ;       ========减一计数中比较匹配时置位
 0032           ;       ========CS12,CS11,CS10=010,表示8预分频计时器
 0032           ;   */
 0032           ;   DDRB|=0X3e;//PB2为输出端,(pb3,pb4,pb5为液晶驱动脚设为输出)
 0032 87B3              in R24,0x17
 0034 8E63              ori R24,62
 0036 87BB              out 0x17,R24
 0038                   .dbline 36
 0038           ;   TCCR1A=0X63;  //0110 0011
 0038 83E6              ldi R24,99
 003A 8FBD              out 0x2f,R24
 003C                   .dbline 37
 003C           ;   TCCR1B=0X12;  //0001 0010
 003C 82E1              ldi R24,18
 003E 8EBD              out 0x2e,R24
 0040                   .dbline 38
 0040           ;   OCR1A=0x61A7;    //设置TOP值为1249
 0040 87EA              ldi R24,24999
 0042 91E6              ldi R25,97
 0044 9BBD              out 0x2b,R25
 0046 8ABD              out 0x2a,R24
 0048                   .dbline 39
 0048           ;   OCR1B=2500;      //比较匹配值
 0048 84EC              ldi R24,2500
 004A 99E0              ldi R25,9
 004C 99BD              out 0x29,R25
 004E 88BD              out 0x28,R24
 0050                   .dbline 41
 0050           ;   
 0050           ;   SREG =0X80;      //使能总中断 
 0050 80E8              ldi R24,128
 0052 8FBF              out 0x3f,R24
 0054                   .dbline 42
 0054           ;   MBZ=0;               
 0054 2224              clr R2
 0056 20922B00          sts _MBZ,R2
 005A 12C0              rjmp L7
 005C           L6:
 005C                   .dbline 44
 005C           ;   while(1)          
 005C           ;   { 
 005C                   .dbline 45
 005C           ;     keysy();  
 005C 00D0              rcall _keysy
 005E                   .dbline 46
 005E           ;       DDRD|=BIT(PD7); //PD7设为输出
 005E 8F9A              sbi 0x11,7
 0060                   .dbline 47
 0060           ;       DDRD|=BIT(PD6);
 0060 8E9A              sbi 0x11,6
 0062                   .dbline 48
 0062           ;       if(MBZ==0)                                     
 0062 20902B00          lds R2,_MBZ
 0066 2220              tst R2
 0068 09F4              brne L9
 006A                   .dbline 49
 006A           ;        {
 006A                   .dbline 50
 006A           ;        LED_LIANG;   //PD7为1,点亮LED指示灯
 006A 979A              sbi 0x12,7
 006C                   .dbline 51
 006C           ;        }
 006C           L9:
 006C                   .dbline 52
 006C           ;       if(MBZ==1)                                                 
 006C 80912B00          lds R24,_MBZ
 0070 8130              cpi R24,1
 0072 31F4              brne L11
 0074                   .dbline 53
 0074           ;        {
 0074                   .dbline 54
 0074           ;          LED_MIE;
 0074 9798              cbi 0x12,7
 0076                   .dbline 55
 0076           ;          BIT_80|=0x80;//a.BEEP1=1;
 0076 80910200          lds R24,_BIT_80
 007A 8068              ori R24,128
 007C 80930200          sts _BIT_80,R24
 0080                   .dbline 56
 0080           ;        }
 0080           L11:
 0080                   .dbline 57
 0080           L7:
 0080                   .dbline 43
 0080 EDCF              rjmp L6
 0082           X0:
 0082                   .dbline -2
 0082           L1:
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbsym r x 20 c
 0084                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\avr3\main.c
 0000           _TMS::
 0000                   .blkb 2
 0002                   .dbfile C:\avr3/main.h
 0002                   .dbsym e TMS _TMS i
 0002           _BIT_80::
 0002                   .blkb 1
 0003                   .dbsym e BIT_80 _BIT_80 c
 0003           _CHW::
 0003                   .blkb 1
 0004                   .dbsym e CHW _CHW c
 0004           _KEY::
 0004                   .blkb 1
 0005                   .dbsym e KEY _KEY c
 0005           _KKEY_n::
 0005                   .blkb 14
 0013                   .dbsym e KKEY_n _KKEY_n A[14:14]c
 0013           _LCD::
 0013                   .blkb 23
 002A                   .dbsym e LCD _LCD A[23:23]c
 002A           _VARIA_BIT::
 002A                   .blkb 1
 002B                   .dbsym e VARIA_BIT _VARIA_BIT c
 002B           _MBZ::
 002B                   .blkb 1
 002C                   .dbsym e MBZ _MBZ c

⌨️ 快捷键说明

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