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

📄 led+ad.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module LED+AD.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 F:\李鹏飞\sl-avrad-m16\LED+AD\LED+AD.C
 0010                   .dbsym e tabel _tabel A[16:16]kc
                        .area text(rom, con, rel)
 0000                   .dbfile F:\李鹏飞\sl-avrad-m16\LED+AD\LED+AD.C
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 23
 0000           ; /******************************************************
 0000           ;               双龙电子公司http://www.sl.com.cn
 0000           ;               AT90S8535--AD转换演示程序(ICCAVR)
 0000           ;                         作者:詹卫前          
 0000           ;       使用注意:1、应包含头文件slavr.h
 0000           ;               2、在工程选项中的Additional Lib中填入slavr
 0000           ;                        使用编译器使用附加库文件libslavr.a
 0000           ;                         3、使用SL-AVRAD实验设备
 0000           ;     接线说明:1、PA.0(PIN40)处接电平指示LED的短路块断开
 0000           ;                         2、A/D和VX之间的短路块闭合
 0000           ;                         3、AREF(PIN32)和AVCC(PIN30)接VCC
 0000           ;                         4、AGND(PIN31)接GND                                                                                                                     
 0000           ; *******************************************************/
 0000           ; #include<iom16v.h>
 0000           ; #include<slavr.h>
 0000           ; #include<macros.h>
 0000           ;           /*   七段译码字形表     */        
 0000           ; const unsigned char tabel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
 0000           ;               0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 0000           ;           /*     显示缓冲区       */
 0000           ; unsigned char ledbuff[6];
 0000           ; void port_init(void)//端口初始化
 0000           ;  {
 0000                   .dbline 24
 0000           ;   DDRD=0x3f;
 0000 8FE3              ldi R24,63
 0002 81BB              out 0x11,R24
 0004                   .dbline 25
 0004           ;   DDRB=0xff;
 0004 8FEF              ldi R24,255
 0006 87BB              out 0x17,R24
 0008                   .dbline 26
 0008           ;   PORTD=0xff;
 0008 82BB              out 0x12,R24
 000A                   .dbline 27
 000A           ;   PORTB=0xff;
 000A 88BB              out 0x18,R24
 000C                   .dbline -2
 000C                   .dbline 28
 000C           ;  }
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbend
 000E                   .dbfunc e display _display fV
 000E           ;              i -> R10
                        .even
 000E           _display::
 000E 0E940000          xcall push_gset3x
 0012                   .dbline -1
 0012                   .dbline 30
 0012           ; void display(void)//六路动态扫描显示电路
 0012           ; {
 0012                   .dbline 32
 0012           ;  unsigned char i;
 0012           ;  for (i=0;i<6;i++)
 0012 AA24              clr R10
 0014 19C0              xjmp L6
 0016           L3:
 0016                   .dbline 33
 0016                   .dbline 34
 0016 80E0              ldi R24,<_ledbuff
 0018 90E0              ldi R25,>_ledbuff
 001A EA2D              mov R30,R10
 001C FF27              clr R31
 001E E80F              add R30,R24
 0020 F91F              adc R31,R25
 0022 2080              ldd R2,z+0
 0024 28BA              out 0x18,R2
 0026                   .dbline 35
 0026 01E0              ldi R16,1
 0028 1A2D              mov R17,R10
 002A 0E940000          xcall lsl8
 002E 202E              mov R2,R16
 0030 2094              com R2
 0032 22BA              out 0x12,R2
 0034                   .dbline 36
 0034 0E940000          xcall _delay_1ms
 0038                   .dbline 37
 0038 01E0              ldi R16,1
 003A 1A2D              mov R17,R10
 003C 0E940000          xcall lsl8
 0040 22B2              in R2,0x12
 0042 202A              or R2,R16
 0044 22BA              out 0x12,R2
 0046                   .dbline 38
 0046           L4:
 0046                   .dbline 32
 0046 A394              inc R10
 0048           L6:
 0048                   .dbline 32
 0048 8A2D              mov R24,R10
 004A 8630              cpi R24,6
 004C 20F3              brlo L3
 004E                   .dbline -2
 004E                   .dbline 39
 004E           ;   {
 004E           ;    PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
 004E           ;    PORTD=~(1<<i);   //开始显示
 004E           ;    delay_1ms();     //每一位显示保持一定时间
 004E           ;    PORTD|=(1<<i);   //关闭显示
 004E           ;   }
 004E           ; } 
 004E           L2:
 004E 0E940000          xcall pop_gset3x
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbsym r i 10 c
 0054                   .dbend
 0054                   .dbfunc e adctovol _adctovol fV
 0054           ;         char_p -> <dead>
 0054           ;              i -> R10
 0054           ;           temp -> R12,R13
 0054           ;            adc -> R10,R11
                        .even
 0054           _adctovol::
 0054 0E940000          xcall push_gset4x
 0058 5801              movw R10,R16
 005A                   .dbline -1
 005A                   .dbline 44
 005A           ; unsigned int ad_con;//存放PA0的AD转换结果
 005A           ; /*      将AD结果转换成电压     */
 005A           ; #define vref   497
 005A           ; void adctovol(unsigned int adc)
 005A           ;     {
 005A                   .dbline 48
 005A           ;        unsigned int temp;
 005A           ;        unsigned char i;
 005A           ;        unsigned char *char_p;
 005A           ;      temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
 005A 1501              movw R2,R10
 005C 4424              clr R4
 005E 5524              clr R5
 0060 81EF              ldi R24,241
 0062 91E0              ldi R25,1
 0064 A0E0              ldi R26,0
 0066 B0E0              ldi R27,0
 0068 5A92              st -y,R5
 006A 4A92              st -y,R4
 006C 3A92              st -y,R3
 006E 2A92              st -y,R2
 0070 8C01              movw R16,R24
 0072 9D01              movw R18,R26
 0074 0E940000          xcall empy32u
 0078 8AE0              ldi R24,10
 007A 90E0              ldi R25,0
 007C 8A93              st -y,R24
 007E 0E940000          xcall lsr32
 0082 6801              movw R12,R16
 0084                   .dbline 49
 0084           ;      for(i=0;i<3;i++)
 0084 AA24              clr R10
 0086 19C0              xjmp L11
 0088           L8:
 0088                   .dbline 50
 0088                   .dbline 51
 0088 2AE0              ldi R18,10
 008A 30E0              ldi R19,0
 008C 8601              movw R16,R12
 008E 0E940000          xcall mod16u
 0092 F801              movw R30,R16
 0094 80E0              ldi R24,<_tabel
 0096 90E0              ldi R25,>_tabel
 0098 E80F              add R30,R24
 009A F91F              adc R31,R25
 009C E491              lpm R30,Z
 009E 80E0              ldi R24,<_ledbuff
 00A0 90E0              ldi R25,>_ledbuff
 00A2 AA2D              mov R26,R10
 00A4 BB27              clr R27
 00A6 A80F              add R26,R24
 00A8 B91F              adc R27,R25
 00AA EC93              st x,R30
 00AC                   .dbline 52
 00AC 2AE0              ldi R18,10
 00AE 30E0              ldi R19,0
 00B0 8601              movw R16,R12
 00B2 0E940000          xcall div16u
 00B6 6801              movw R12,R16
 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 20F3              brlo L8
 00C0                   .dbline 54
 00C0           ;           {
 00C0           ;                ledbuff[i]=tabel[temp%10];
 00C0           ;                temp=temp/10;
 00C0           ;               }
 00C0           ;      ledbuff[5]=tabel[0x0a];
 00C0 E0E0              ldi R30,<_tabel+10
 00C2 F0E0              ldi R31,>_tabel+10
 00C4 E491              lpm R30,Z
 00C6 E0930700          sts _ledbuff+5,R30
 00CA                   .dbline 55
 00CA           ;        ledbuff[4]=tabel[0x0d];

⌨️ 快捷键说明

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