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

📄 led.lis

📁 AVR基本外设测试程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module led.c
                        .area vector(rom, abs)
                        .org 18
 0012 00C0              rjmp _timet0_ovf
                        .area data(ram, con, rel)
 0000           L2:
 0000                   .blkb 2
                        .area idata
 0000 6E00              .word 110
                        .area data(ram, con, rel)
 0002           L3:
 0002                   .blkb 2
                        .area idata
 0002 BE00              .word 190
                        .area data(ram, con, rel)
 0004           L4:
 0004                   .blkb 2
                        .area idata
 0004 2003              .word 800
                        .area data(ram, con, rel)
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVR-PRO\avr3\led.c
 0000                   .dbfunc e timet0_ovf _timet0_ovf fV
 0000                   .dbsym s M05_CONT L4 i
 0000                   .dbsym s BEEP2_CONT L3 i
 0000                   .dbsym s BEEP1_CONT L2 i
                        .even
 0000           _timet0_ovf::
 0000 2A92              st -y,R2
 0002 3A92              st -y,R3
 0004 8A93              st -y,R24
 0006 9A93              st -y,R25
 0008 EA93              st -y,R30
 000A 2FB6              in R2,0x3f
 000C 2A92              st -y,R2
 000E                   .dbline -1
 000E                   .dbline 52
 000E           ;  #include <iom8v.h>                   //包含型号头文件
 000E           ;  #include <macros.h>                  //包含"位"操作头文件
 000E           ;  #include <stdio.h>
 000E           ; 
 000E           ;  //========PD7输出高电平
 000E           ;  #define  LED_LIANG PORTD|=BIT(PD7)
 000E           ;  //========PD7输出低电平
 000E           ;  #define  LED_MIE   PORTD&=~BIT(PD7) 
 000E           ;  //========PD6输出高电平
 000E           ;  #define  BUZZ_YE   PORTD|=BIT(PD6)
 000E           ;  //========PD6输出低电平
 000E           ;  #define  BUZZ_NO   PORTD&=~BIT(PD6) 
 000E           ;  /*========液晶模拟驱动口定义==========*/
 000E           ;  #define  HT_CS_ONE  PORTB|=BIT(PB3)
 000E           ;  #define  HT_CS_ZER  PORTB&=-BIT(PB3)
 000E           ;  #define  HT_WR_ONE  PORTB|=BIT(PB4)
 000E           ;  #define  HT_WR_ZER  PORTB&=-BIT(PB4)
 000E           ;  #define  HT_DT_ONE  PORTB|=BIT(PB5)
 000E           ;  #define  HT_DT_ZER  PORTB&=-BIT(PB5)
 000E           ;  
 000E           ;  #define  PC1_1  PORTC|=BIT(PC1)
 000E           ;  #define  PC1_0  PORTC&=-BIT(PC1)
 000E           ;  #define  PC2_1  PORTC|=BIT(PC2)
 000E           ;  #define  PC2_0  PORTC&=-BIT(PC2)
 000E           ;  #define  PC3_1  PORTC|=BIT(PC3)
 000E           ;  #define  PC3_0  PORTC&=-BIT(PC3)
 000E           ;  #define  PC4_1  PORTC|=BIT(PC4)
 000E           ;  #define  PC4_0  PORTC&=-BIT(PC4)
 000E           ;  #define  PC5_1  PORTC|=BIT(PC5)
 000E           ;  #define  PC5_0  PORTC&=-BIT(PC5)
 000E           ;  /*全局变量定义*/
 000E           ;  
 000E           ; 
 000E           ; 
 000E           ;  unsigned char MBZ,VARIA_BIT,LCD[23];
 000E           ;  struct data
 000E           ;  {
 000E           ;    unsigned BEEP1:1;
 000E           ;    unsigned BEEP2:1;
 000E           ;    unsigned BIT1 :1;
 000E           ;    unsigned BIT2 :1;
 000E           ;    unsigned BIT3 :1;
 000E           ;    unsigned BIT4 :1;
 000E           ;    unsigned BIT5 :1;
 000E           ;    unsigned BIT6 :1;
 000E           ;  }a;
 000E           ;  
 000E           ;  unsigned char key_t2();
 000E           ; /*=============定时器0中断函数==============*/
 000E           ;  #pragma interrupt_handler timet0_ovf:10
 000E           ;   void timet0_ovf(void)                 
 000E           ;   {
 000E                   .dbline 57
 000E           ;         static unsigned int 
 000E           ;                        BEEP1_CONT=110,
 000E           ;                        BEEP2_CONT=190,
 000E           ;                        M05_CONT=800;  
 000E           ;           SREG =0X80;  //重新开放中断
 000E 80E8              ldi R24,128
 0010 8FBF              out 0x3f,R24
 0012                   .dbline 58
 0012           ;           TCNT0=0XEE;   //重装1.25MS的定时初值
 0012 8EEE              ldi R24,238
 0014 82BF              out 0x32,R24
 0016                   .dbline 59
 0016           ;               DDRB|=BIT(PB0);
 0016 B89A              sbi 0x17,0
 0018                   .dbline 60
 0018           ;               PORTB|=BIT(PB0);                       
 0018 C09A              sbi 0x18,0
 001A                   .dbline 61
 001A           ;           M05_CONT--;
 001A 80910400          lds R24,L4
 001E 90910500          lds R25,L4+1
 0022 0197              sbiw R24,1
 0024 90930500          sts L4+1,R25
 0028 80930400          sts L4,R24
 002C                   .dbline 62
 002C           ;           if(M05_CONT==0)
 002C 8030              cpi R24,0
 002E 8907              cpc R24,R25
 0030 89F4              brne L5
 0032           X0:
 0032                   .dbline 63
 0032           ;           {
 0032                   .dbline 64
 0032           ;              M05_CONT=800;
 0032 80E2              ldi R24,800
 0034 93E0              ldi R25,3
 0036 90930500          sts L4+1,R25
 003A 80930400          sts L4,R24
 003E                   .dbline 65
 003E           ;                  if(MBZ==0)   { MBZ=1; }
 003E 20901900          lds R2,_MBZ
 0042 2220              tst R2
 0044 21F4              brne L7
 0046                   .dbline 65
 0046                   .dbline 65
 0046 81E0              ldi R24,1
 0048 80931900          sts _MBZ,R24
 004C                   .dbline 65
 004C 03C0              rjmp L8
 004E           L7:
 004E                   .dbline 66
 004E           ;                  else         { MBZ=0; }
 004E                   .dbline 66
 004E 2224              clr R2
 0050 20921900          sts _MBZ,R2
 0054                   .dbline 66
 0054           L8:
 0054                   .dbline 67
 0054           ;           }
 0054           L5:
 0054                   .dbline 68
 0054           ;               if(a.BEEP1==1)
 0054 80910000          lds R24,_a
 0058 8170              andi R24,1
 005A 8130              cpi R24,1
 005C E1F4              brne L9
 005E                   .dbline 69
 005E           ;               {
 005E                   .dbline 70
 005E           ;                       BUZZ_NO;
 005E 9698              cbi 0x12,6
 0060                   .dbline 71
 0060           ;                   if((BEEP1_CONT--)==1)
 0060 20900000          lds R2,L2
 0064 30900100          lds R3,L2+1
 0068 C101              movw R24,R2
 006A 0197              sbiw R24,1
 006C 90930100          sts L2+1,R25
 0070 80930000          sts L2,R24
 0074 C101              movw R24,R2
 0076 8130              cpi R24,1
 0078 E0E0              ldi R30,0
 007A 9E07              cpc R25,R30
 007C 61F4              brne L11
 007E                   .dbline 72
 007E           ;                 {
 007E                   .dbline 73
 007E           ;                  BEEP1_CONT=110;
 007E 8EE6              ldi R24,110
 0080 90E0              ldi R25,0
 0082 90930100          sts L2+1,R25
 0086 80930000          sts L2,R24
 008A                   .dbline 74
 008A           ;                  BUZZ_YE;
 008A 969A              sbi 0x12,6
 008C                   .dbline 75
 008C           ;                  a.BEEP1=0;
 008C 80910000          lds R24,_a
 0090 8E7F              andi R24,254
 0092 80930000          sts _a,R24
 0096                   .dbline 76
 0096           ;                 }
 0096           L11:
 0096                   .dbline 77
 0096           ;               }
 0096           L9:
 0096                   .dbline 79
 0096           ; /*==========响铃2次函数设置============*/     
 0096           ;                       if(a.BEEP2==1)          //响铃2次
 0096 80910000          lds R24,_a
 009A 8695              lsr R24
 009C 8170              andi R24,1
 009E 8130              cpi R24,1
 00A0 09F0              breq X3
 00A2 3DC0              rjmp L13
 00A4           X3:
 00A4                   .dbline 80
 00A4           ;       {
 00A4                   .dbline 81
 00A4           ;               --BEEP2_CONT;
 00A4 80910200          lds R24,L3
 00A8 90910300          lds R25,L3+1
 00AC 0197              sbiw R24,1
 00AE 90930300          sts L3+1,R25
 00B2 80930200          sts L3,R24
 00B6                   .dbline 82
 00B6           ;               if(BEEP2_CONT>113)
 00B6 81E7              ldi R24,113
 00B8 90E0              ldi R25,0
 00BA 20900200          lds R2,L3
 00BE 30900300          lds R3,L3+1
 00C2 8215              cp R24,R2
 00C4 9305              cpc R25,R3
 00C6 10F4              brsh L15
 00C8                   .dbline 83
 00C8           ;               {
 00C8                   .dbline 84
 00C8           ;                       BUZZ_NO;
 00C8 9698              cbi 0x12,6
 00CA                   .dbline 85
 00CA           ;               }else
 00CA 29C0              rjmp L16
 00CC           L15:
 00CC                   .dbline 86
 00CC           ;               if(BEEP2_CONT>75)
 00CC 8BE4              ldi R24,75
 00CE 90E0              ldi R25,0
 00D0 20900200          lds R2,L3
 00D4 30900300          lds R3,L3+1
 00D8 8215              cp R24,R2
 00DA 9305              cpc R25,R3
 00DC 10F4              brsh L17
 00DE                   .dbline 87
 00DE           ;               {
 00DE                   .dbline 88
 00DE           ;                       BUZZ_YE;
 00DE 969A              sbi 0x12,6
 00E0                   .dbline 89
 00E0           ;               }else
 00E0 1EC0              rjmp L18
 00E2           L17:
 00E2                   .dbline 90
 00E2           ;               if(BEEP2_CONT>0)
 00E2 20900200          lds R2,L3
 00E6 30900300          lds R3,L3+1
 00EA 2220              tst R2
 00EC 11F4              brne X1
 00EE 3320              tst R3
 00F0 11F0              breq L19
 00F2           X1:
 00F2                   .dbline 91
 00F2           ;               {
 00F2                   .dbline 92
 00F2           ;                       BUZZ_NO;
 00F2 9698              cbi 0x12,6
 00F4                   .dbline 93
 00F4           ;               }else
 00F4 14C0              rjmp L20
 00F6           L19:
 00F6                   .dbline 94
 00F6           ;               if(BEEP2_CONT==0)
 00F6 20900200          lds R2,L3
 00FA 30900300          lds R3,L3+1
 00FE 2220              tst R2
 0100 71F4              brne L21
 0102 3320              tst R3
 0104 61F4              brne L21
 0106           X2:
 0106                   .dbline 95
 0106           ;               {
 0106                   .dbline 96
 0106           ;                       BUZZ_YE;
 0106 969A              sbi 0x12,6
 0108                   .dbline 97
 0108           ;                       a.BEEP2=0;
 0108 80910000          lds R24,_a
 010C 8D7F              andi R24,253
 010E 80930000          sts _a,R24
 0112                   .dbline 98
 0112           ;                       BEEP2_CONT=190;
 0112 8EEB              ldi R24,190
 0114 90E0              ldi R25,0
 0116 90930300          sts L3+1,R25

⌨️ 快捷键说明

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