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

📄 ad_led.lis

📁 AVR系列单片机源代码例子,可在ICCAVR中直接使用
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                         .module ad_led.c
                         .area lit(rom, con, rel)
 0000                 _tabel::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010                   .dbfile D:\ICC-AVR\examples.sl\AD_8535_LED\ad_led.c
 0010                   .dbsym s tabel _tabel A[16:16]c
                         .area text(rom, con, rel)
 0000                   .dbfile D:\ICC-AVR\examples.sl\AD_8535_LED\ad_led.c
 0000                   .dbfunc s port_init _port_init fI
                         .even
 0000                 _port_init::
 0000                   .dbline -1
 0000                   .dbline 23
                       ; /******************************************************
                       ;               双龙电子公司http://www.sl.com.cn
                       ;               AT90S8535--AD转换演示程序(ICCAVR)
                       ;                       作者:詹卫前      
                       ;     使用注意:1、应包含头文件slavr.h
                       ;               2、在工程选项中的Additional Lib中填入slavr
                       ;                  使用编译器使用附加库文件libslavr.a
                       ;               3、使用SL-AVRAD实验设备
                       ;     接线说明:1、PA.0(PIN40)处接电平指示LED的短路块断开
                       ;               2、A/D和VX之间的短路块闭合
                       ;               3、AREF(PIN32)和AVCC(PIN30)接VCC
                       ;               4、AGND(PIN31)接GND                                                             
                       ; *******************************************************/
                       ; #include<io8535.h>
                       ; #include<slavr.h>
                       ; #include<macros.h>
                       ;           /*   七段译码字形表     */        
                       ; const unsigned char tabel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                       ;         0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
                       ;           /*     显示缓冲区       */
                       ; unsigned char ledbuff[6];
                       ; void port_init(void)//端口初始化
                       ;  {
 0000                   .dbline 24
                       ;   DDRD=0x3f;
 0000 8FE3              ldi R24,63
 0002 81BB              out 0x11,R24
 0004                   .dbline 25
                       ;   DDRB=0xff;
 0004 8FEF              ldi R24,255
 0006 87BB              out 0x17,R24
 0008                   .dbline 26
                       ;   PORTD=0xff;
 0008 82BB              out 0x12,R24
 000A                   .dbline 27
                       ;   PORTB=0xff;
 000A 88BB              out 0x18,R24
 000C                   .dbline -2
 000C                   .dbline 28
                       ;  }
 000C                 L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbfunc s display _display fI
                       ;              i -> R20
                         .even
 000E                 _display::
 000E 00D0              rcall push_gset1
 0010                   .dbline -1
 0010                   .dbline 30
                       ; void display(void)//六路动态扫描显示电路
                       ; {
 0010                   .dbline 32
                       ;  unsigned char i;
                       ;  for (i=0;i<6;i++)
 0010 4427              clr R20
 0012 16C0              rjmp L6
 0014                 L3:
 0014                   .dbline 33
 0014                   .dbline 34
 0014 80E0              ldi R24,<_ledbuff
 0016 90E0              ldi R25,>_ledbuff
 0018 E42F              mov R30,R20
 001A FF27              clr R31
 001C E80F              add R30,R24
 001E F91F              adc R31,R25
 0020 2080              ldd R2,z+0
 0022 28BA              out 0x18,R2
 0024                   .dbline 35
 0024 01E0              ldi R16,1
 0026 142F              mov R17,R20
 0028 00D0              rcall lsl8
 002A 202E              mov R2,R16
 002C 2094              com R2
 002E 22BA              out 0x12,R2
 0030                   .dbline 36
 0030 00D0              rcall _delay_1ms
 0032                   .dbline 37
 0032 01E0              ldi R16,1
 0034 142F              mov R17,R20
 0036 00D0              rcall lsl8
 0038 22B2              in R2,0x12
 003A 202A              or R2,R16
 003C 22BA              out 0x12,R2
 003E                   .dbline 38
 003E                 L4:
 003E                   .dbline 32
 003E 4395              inc R20
 0040                 L6:
 0040                   .dbline 32
 0040 4630              cpi R20,6
 0042 40F3              brlo L3
 0044                   .dbline -2
 0044                   .dbline 39
                       ;   {
                       ;    PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
                       ;    PORTD=~(1<<i);   //开始显示
                       ;    delay_1ms();     //每一位显示保持一定时间
                       ;    PORTD|=(1<<i);   //关闭显示
                       ;   }
                       ; } 
 0044                 L2:
 0044 00D0              rcall pop_gset1
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbsym r i 20 c
 0048                   .dbfunc s adctovol _adctovol fI
                       ;         char_p -> <dead>
                       ;              i -> R10
                       ;           temp -> R12,R13
                       ;            adc -> R10,R11
                         .even
 0048                 _adctovol::
 0048 00D0              rcall push_gset4
 004A A02E              mov R10,R16
 004C B12E              mov R11,R17
 004E                   .dbline -1
 004E                   .dbline 44
                       ; unsigned int ad_con;//存放PA0的AD转换结果
                       ; /*      将AD结果转换成电压     */
                       ; #define vref   497
                       ; void adctovol(unsigned int adc)
                       ;     {
 004E                   .dbline 48
                       ;      unsigned int temp;
                       ;      unsigned char i;
                       ;      unsigned char *char_p;
                       ;      temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
 004E 2A2C              mov R2,R10
 0050 3B2C              mov R3,R11
 0052 4424              clr R4
 0054 5524              clr R5
 0056 41EF              ldi R20,241
 0058 51E0              ldi R21,1
 005A 60E0              ldi R22,0
 005C 70E0              ldi R23,0
 005E 5A92              st -y,R5
 0060 4A92              st -y,R4
 0062 3A92              st -y,R3
 0064 2A92              st -y,R2
 0066 042F              mov R16,R20
 0068 152F              mov R17,R21
 006A 262F              mov R18,R22
 006C 372F              mov R19,R23
 006E 00D0              rcall mpy32u
 0070 8AE0              ldi R24,10
 0072 90E0              ldi R25,0
 0074 8A93              st -y,R24
 0076 00D0              rcall lsr32
 0078 C02E              mov R12,R16
 007A D12E              mov R13,R17
 007C                   .dbline 49
                       ;      for(i=0;i<3;i++)
 007C AA24              clr R10
 007E 1DC0              rjmp L11
 0080                 L8:
 0080                   .dbline 50
 0080                   .dbline 51
 0080 2AE0              ldi R18,10
 0082 30E0              ldi R19,0
 0084 0C2D              mov R16,R12
 0086 1D2D              mov R17,R13
 0088 00D0              rcall mod16u
 008A 202E              mov R2,R16
 008C 312E              mov R3,R17
 008E 80E0              ldi R24,<_tabel
 0090 90E0              ldi R25,>_tabel
 0092 280E              add R2,R24
 0094 391E              adc R3,R25
 0096 E22D              mov R30,R2
 0098 F32D              mov R31,R3
 009A C895              lpm
 009C 80E0              ldi R24,<_ledbuff
 009E 90E0              ldi R25,>_ledbuff
 00A0 EA2D              mov R30,R10
 00A2 FF27              clr R31
 00A4 E80F              add R30,R24
 00A6 F91F              adc R31,R25
 00A8 0082              std z+0,R0
 00AA                   .dbline 52
 00AA 2AE0              ldi R18,10
 00AC 30E0              ldi R19,0
 00AE 0C2D              mov R16,R12
 00B0 1D2D              mov R17,R13
 00B2 00D0              rcall div16u
 00B4 C02E              mov R12,R16
 00B6 D12E              mov R13,R17
 00B8                   .dbline 53
 00B8                 L9:
 00B8                   .dbline 49
 00B8 A394              inc R10
 00BA                 L11:
 00BA                   .dbline 49
 00BA 8A2D              mov R24,R10
 00BC 8330              cpi R24,3
 00BE 00F3              brlo L8
 00C0                   .dbline 54
                       ;         {
                       ;          ledbuff[i]=tabel[temp%10];
                       ;          temp=temp/10;
                       ;         }
                       ;      ledbuff[5]=tabel[0x0a];
 00C0 80E0              ldi R24,<_tabel+10
 00C2 90E0              ldi R25,>_tabel+10

⌨️ 快捷键说明

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