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

📄 main.lis

📁 AVR单片机做的数字电压表
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module main.c
                        .area lit(rom, con, rel)
 0000           _AC_TABLE::
 0000 8081              .byte 128,129
 0002 8283              .byte 130,131
 0004 8485              .byte 132,133
 0006 8687              .byte 134,135
 0008 9091              .byte 144,145
 000A 9293              .byte 146,147
 000C 9495              .byte 148,149
 000E 9697              .byte 150,151
 0010 8889              .byte 136,137
 0012 8A8B              .byte 138,139
 0014 8C8D              .byte 140,141
 0016 8E8F              .byte 142,143
 0018 9899              .byte 152,153
 001A 9A9B              .byte 154,155
 001C 9C9D              .byte 156,157
 001E 9E9F              .byte 158,159
 0020                   .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
 0020                   .dbsym e AC_TABLE _AC_TABLE A[32:32]kc
                        .area data(ram, con, rel)
 0000                   .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
 0000           _str20::
 0000                   .blkb 17
                        .area idata
 0000 BBB6D3ADB9E2C1D9736F6E73616E2121  .byte 187,182,211,173,185,226,193,217,'s,'o,'n,'s,'a,'n,33,33
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
 0011                   .dbsym e str20 _str20 A[17:17]c
 0011           _str10::
 0011                   .blkb 65
                        .area idata
 0011 BBC6BAD3D4B6C9CFB0D7D4C6BCE4A3AC  .byte 187,198,186,211,212,182,201,207,176,215,212,198,188,228,163,172
 0021 D2BBC6ACB9C2B3C7CDF2D8F0C9BDA1A3  .byte 210,187,198,172,185,194,179,199,205,242,216,240,201,189,161,163
 0031 C7BCB5D1BACED0EBD4B9D1EEC1F8A3AC  .byte 199,188,181,209,186,206,208,235,212,185,209,238,193,248,163,172
 0041 B4BAB7E7B2BBB6C8D3F1C3C5B9D8A1A3  .byte 180,186,183,231,178,187,182,200,211,241,195,197,185,216,161,163
 0051 00                .byte 0
                        .area data(ram, con, rel)
 0052                   .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
 0052                   .dbsym e str10 _str10 A[65:65]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\本人实验\重新实验\adc_vcc/lcd.h
 0000                   .dbfunc e DelayKey _DelayKey fV
 0000           ;              i -> R20,R21
 0000           ;             ms -> R16,R17
                        .even
 0000           _DelayKey::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 41
 0004           ;  #include  "iom16v.h"
 0004           ;  #include  "macros.h"
 0004           ;  #include  "lcd.h"
 0004           ;  //#include <stdio.h> 
 0004           ; // #include <stdlib.h>  //sprintf函数用
 0004           ;  //#include <string.h>  //字符连接函数用
 0004           ;  #define  uchar unsigned char
 0004           ;  #define  uint  unsigned int
 0004           ;  uchar str[]="电压为      毫伏";
 0004           ;  uchar  str2[4]  ;
 0004           ;  float adc_data;  //不能为uint型,否则只显示个位
 0004           ;  uint vcc;
 0004           ;  
 0004           ;  
 0004           ;  void delay_ms(uchar i)
 0004           ;  {
 0004           ;    uchar a,b;
 0004           ;    for(a=1;a<i;a++)
 0004           ;      for(b=1;b<141;b++)
 0004           ;        {;}
 0004           ;  }
 0004           ;  
 0004           ; 
 0004           ; /*****************字符连接函数********************/ 
 0004           ; /*void strcatenate(char t[], char s[] ) 
 0004           ; { 
 0004           ; strcat(t,s); 
 0004           ; } */
 0004           ;  
 0004           ; /****************电压i伏特转换为对应字符*************************/ 
 0004           ; void change(uint i,uchar *p)           //显示处理
 0004           ; {  p[3]=i%10+48;//个
 0004           ;    p[2]=i/10%10+48;//十
 0004           ;    p[1]=i/100%10+48;//百
 0004           ;    p[0]=i/1000%10+48;//千
 0004           ; }
 0004           ;  
 0004           ;  #pragma interrupt_handler adc_end: 15
 0004           ;  void adc_end(void)
 0004           ;  {
 0004           ;  adc_data=(float)(ADCH*4+ADCL/64);
 0004 09C0              xjmp L3
 0006           L2:
 0006                   .dbline 44
 0006           ; 
 0006           ;   
 0006           ;  if (adc_data>3*1024/5) //大于3V PB0亮
 0006                   .dbline 45
 0006           ;    PORTB=~0B001;
 0006 41E0              ldi R20,1
 0008 50E0              ldi R21,0
 000A 02C0              xjmp L8
 000C           L5:
 000C                   .dbline 46
 000C           L6:
 000C                   .dbline 45
 000C 4F5F              subi R20,255  ; offset = 1
 000E 5F4F              sbci R21,255
 0010           L8:
 0010                   .dbline 45
 0010 4D38              cpi R20,141
 0012 E0E0              ldi R30,0
 0014 5E07              cpc R21,R30
 0016 D0F3              brlo L5
 0018                   .dbline 47
 0018           L3:
 0018                   .dbline 43
 0018 1801              movw R2,R16
 001A 0150              subi R16,1
 001C 1040              sbci R17,0
 001E 2220              tst R2
 0020 91F7              brne L2
 0022 3320              tst R3
 0024 81F7              brne L2
 0026           X0:
 0026                   .dbline -2
 0026           L1:
 0026 0E940000          xcall pop_gset1
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r i 20 i
 002C                   .dbsym r ms 16 i
 002C                   .dbend
 002C                   .dbfunc e LCD_WriteByte _LCD_WriteByte fV
 002C           ;              i -> R20
 002C           ;          Dbyte -> R16
                        .even
 002C           _LCD_WriteByte::
 002C 0E940000          xcall push_gset1
 0030                   .dbline -1
 0030                   .dbline 52
 0030           ;  else if (adc_data<0.5*1024/5)  //小于0.5V PB1亮
 0030           ;    PORTB=~0B010;
 0030           ;  else
 0030           ;    PORTB=~0B100;  //0.5~3V PB2亮
 0030           ;  ADCSRA |= 0X40;
 0030           ; }
 0030           ;  
 0030                   .dbline 54
 0030           ; 
 0030           ; 
 0030 8E9A              sbi 0x11,6
 0032                   .dbline 55
 0032           ;  void main(void) 
 0032 8C9A              sbi 0x11,4
 0034                   .dbline 57
 0034           ;  {
 0034           ;  uchar i=0;
 0034 4427              clr R20
 0036 0DC0              xjmp L13
 0038           L10:
 0038                   .dbline 58
 0038           ;  DDRA=0X00;
 0038                   .dbline 59
 0038           ;  PORTA=0XFF;
 0038 9698              cbi 0x12,6
 003A                   .dbline 61
 003A           ;  DDRB=0XFF;
 003A           ;  PORTB=0XFF;
 003A 000F              lsl R16
 003C                   .dbline 62
 003C           ;  DDRC=0X00;
 003C 2FB6              in R2,0x3f
 003E 20FE              sbrs R2,0
 0040 02C0              rjmp L14
 0042                   .dbline 63
 0042           ;  PORTC=0X00;
 0042 949A              sbi 0x12,4
 0044 01C0              xjmp L15
 0046           L14:
 0046                   .dbline 65
 0046           ;  /**************配置LCD12864*********************/
 0046           ;  DDRC |=BIT(6);  //设置输出
 0046 9498              cbi 0x12,4
 0048           L15:
 0048                   .dbline 67
 0048 969A              sbi 0x12,6
 004A                   .dbline 68
 004A 0000              nop
 004C                   .dbline 68
 004C 0000              nop
 004E                   .dbline 69
 004E 9698              cbi 0x12,6
 0050                   .dbline 70
 0050           L11:
 0050                   .dbline 57
 0050 4395              inc R20
 0052           L13:
 0052                   .dbline 57
 0052 4830              cpi R20,8
 0054 88F3              brlo L10
 0056                   .dbline 71
 0056           ;  PORTC &= ~BIT(6);  //L:serial mode 串行
 0056           ;  DDRC &= ~BIT(7);  //设置输入
 0056           ;  PORTC &= ~BIT(7); //LCD的NC脚悬空
 0056           ;  DDRD &= ~BIT(7);  //设置输入
 0056           ;  PORTD &= ~BIT(7);  //RST复位低电平有效
 0056           ;  /*****************************************/ 
 0056                   .dbline -2
 0056           L9:
 0056 0E940000          xcall pop_gset1
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbsym r i 20 c
 005C                   .dbsym r Dbyte 16 c
 005C                   .dbend
 005C                   .dbfunc e LCD_ReadByte _LCD_ReadByte fc
 005C           ;          temp2 -> R16
 005C           ;          temp1 -> R18
 005C           ;              i -> R20
                        .even
 005C           _LCD_ReadByte::
 005C 0E940000          xcall push_gset1
 0060                   .dbline -1
 0060                   .dbline 78
 0060           ;  DDRD=0X00;
 0060           ;  PORTD=0XFF;
 0060           ;  LCD_Init();
 0060           ;  ADMUX=0X61;  //PA1为AD电压采样通道
 0060           ;  ADCSRA=0XCB;
 0060           ;  SEI();
 0060           ;  while(1)
 0060                   .dbline 80
 0060           ;     {   
 0060           ;         //strcatenate(str20,str2);    
 0060 0027              clr R16
 0062 2227              clr R18
 0064                   .dbline 81
 0064           ;               //sprintf(str2,"%f",vcc); // 转换float 到 char 
 0064 8E9A              sbi 0x11,6
 0066                   .dbline 82
 0066           ;               vcc=(uint)(adc_data*5000/1024);
 0066 8C98              cbi 0x11,4
 0068                   .dbline 82
 0068 949A              sbi 0x12,4
 006A                   .dbline 84
 006A           ;               change( vcc ,str2)      ;        //显示处理
 006A           ;               delay_ms(20);
 006A 4427              clr R20
 006C 0FC0              xjmp L20
 006E           L17:
 006E                   .dbline 85
 006E           ;       //  LCD_ClearTXT( );
 006E                   .dbline 86
 006E           ;               LCD_PutStr(0,0,str); 
 006E 220F              lsl R18
 0070                   .dbline 88
 0070           ;         LCD_PutStr(0,3,str2);  
 0070           ;               delay_ms(2);
 0070 9698              cbi 0x12,6
 0072                   .dbline 89
 0072           ;                               //  for(;;)
 0072 0000              nop
 0074                   .dbline 89
 0074 0000              nop
 0076                   .dbline 90
 0076           ;                // {
 0076 969A              sbi 0x12,6
 0078                   .dbline 91
 0078           ;                //  continue;
 0078 0000              nop
 007A                   .dbline 91
 007A 0000              nop
 007C                   .dbline 92
 007C           ;               //  }   
 007C 9698              cbi 0x12,6
 007E                   .dbline 94
 007E           ;       }
 007E           ;  }
 007E 80B3              in R24,0x10
 0080 8071              andi R24,16
 0082 8295              swap R24
 0084 8F70              andi R24,#0x0F
 0086 09F0              breq L21
 0088                   .dbline 94
 0088 2395              inc R18
 008A           L21:
 008A                   .dbline 95
 008A           L18:
 008A                   .dbline 84
 008A 4395              inc R20
 008C           L20:
 008C                   .dbline 84
 008C 4830              cpi R20,8
 008E 78F3              brlo L17
 0090                   .dbline 96
 0090           ;  }
 0090           ;  }
 0090 4427              clr R20
 0092 0FC0              xjmp L26
 0094           L23:
 0094                   .dbline 97
 0094           ;  }
 0094                   .dbline 98
 0094           ;  }
 0094 000F              lsl R16
 0096                   .dbline 100
 0096           ;  }
 0096           ;  }
 0096 9698              cbi 0x12,6
 0098                   .dbline 101
 0098           ;  }
 0098 0000              nop
 009A                   .dbline 101
 009A 0000              nop
 009C                   .dbline 102
 009C           ;  }
 009C 969A              sbi 0x12,6
 009E                   .dbline 103
 009E           ;  }
 009E 0000              nop
 00A0                   .dbline 103
 00A0 0000              nop
 00A2                   .dbline 104
 00A2           ;  }
 00A2 9698              cbi 0x12,6
 00A4                   .dbline 106
 00A4           ;  }
 00A4           ;  }
 00A4 80B3              in R24,0x10
 00A6 8071              andi R24,16
 00A8 8295              swap R24
 00AA 8F70              andi R24,#0x0F
 00AC 09F0              breq L27
 00AE                   .dbline 106
 00AE 0395              inc R16
 00B0           L27:
 00B0                   .dbline 107
 00B0           L24:
 00B0                   .dbline 96
 00B0 4395              inc R20
 00B2           L26:
 00B2                   .dbline 96
 00B2 4830              cpi R20,8
 00B4 78F3              brlo L23
 00B6                   .dbline 108
 00B6           ;  }
 00B6           ;  }
 00B6 802F              mov R24,R16
 00B8 8F70              andi R24,15
 00BA 022F              mov R16,R18
 00BC 007F              andi R16,240
 00BE 080F              add R16,R24
 00C0                   .dbline -2
 00C0           L16:
 00C0 0E940000          xcall pop_gset1
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbsym r temp2 16 c
 00C6                   .dbsym r temp1 18 c
 00C6                   .dbsym r i 20 c
 00C6                   .dbend
 00C6                   .dbfunc e LCD_CheckBusy _LCD_CheckBusy fV
                        .even
 00C6           _LCD_CheckBusy::
 00C6                   .dbline -1

⌨️ 快捷键说明

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