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

📄 main.lis

📁 ds18b20在数码管上显示温度,在avr128已编译通过
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 009C                   .dbend
 009C                   .dbfile H:\mega128开发板rev1.1\开发板程序\ds18b20温度+数码管显示程序\initrialm128.h
 009C                   .dbfunc e Init_Devices _Init_Devices fV
                        .even
 009C           _Init_Devices::
 009C                   .dbline -1
 009C                   .dbline 16
 009C           ; //ICC-AVR application builder : 2007-6-27 10:26:06
 009C           ; // Target : M8
 009C           ; // Crystal: 8.0000Mhz
 009C           ; 
 009C           ; /**************初始化m8函数***************/
 009C           ; #ifndef Initrial_M128_H
 009C           ; #define Initrial_M128_H
 009C           ; 
 009C           ; void Init_Devices(void);
 009C           ; void Port_Init(void);  
 009C           ; 
 009C           ;  
 009C           ; 
 009C           ; //call this routine to initialize all peripherals
 009C           ; void Init_Devices(void)
 009C           ; {
 009C                   .dbline 18
 009C           ;       //stop errant interrupts until set up
 009C           ;       CLI(); //disable all interrupts
 009C F894              cli
 009E                   .dbline 19
 009E           ;       Port_Init(); 
 009E 02D0              xcall _Port_Init
 00A0                   .dbline 20
 00A0           ;       SEI(); //re-enable interrupts
 00A0 7894              sei
 00A2                   .dbline -2
 00A2           L29:
 00A2                   .dbline 0 ; func end
 00A2 0895              ret
 00A4                   .dbend
 00A4                   .dbfunc e Port_Init _Port_Init fV
                        .even
 00A4           _Port_Init::
 00A4                   .dbline -1
 00A4                   .dbline 25
 00A4           ;       //all peripherals are now initialized
 00A4           ; }
 00A4           ; 
 00A4           ; void Port_Init(void)
 00A4           ; {
 00A4                   .dbline 26
 00A4           ;       PORTA = 0xff;
 00A4 8FEF              ldi R24,255
 00A6 8BBB              out 0x1b,R24
 00A8                   .dbline 27
 00A8           ;       DDRA  = 0xff;
 00A8 8ABB              out 0x1a,R24
 00AA                   .dbline 28
 00AA           ;       PORTB = 0xff;
 00AA 88BB              out 0x18,R24
 00AC                   .dbline 29
 00AC           ;       DDRB  = 0xff;
 00AC 87BB              out 0x17,R24
 00AE                   .dbline 30
 00AE           ;       PORTC = 0xff; //m103 output only
 00AE 85BB              out 0x15,R24
 00B0                   .dbline 31
 00B0           ;       DDRC  = 0xff;
 00B0 84BB              out 0x14,R24
 00B2                   .dbline 32
 00B2           ;       PORTD = 0xff;
 00B2 82BB              out 0x12,R24
 00B4                   .dbline 33
 00B4           ;       DDRD  = 0xff;
 00B4 81BB              out 0x11,R24
 00B6                   .dbline 34
 00B6           ;       PORTE = 0xFF;
 00B6 83B9              out 0x3,R24
 00B8                   .dbline 35
 00B8           ;       DDRE  = 0xff;
 00B8 82B9              out 0x2,R24
 00BA                   .dbline 36
 00BA           ;       PORTF = 0xff;
 00BA 80936200          sts 98,R24
 00BE                   .dbline 37
 00BE           ;       DDRF  = 0xff;
 00BE 80936100          sts 97,R24
 00C2                   .dbline 38
 00C2           ;       PORTG = 0xff;
 00C2 80936500          sts 101,R24
 00C6                   .dbline 39
 00C6           ;       DDRG  = 0xff;
 00C6 80936400          sts 100,R24
 00CA                   .dbline -2
 00CA           L30:
 00CA                   .dbline 0 ; func end
 00CA 0895              ret
 00CC                   .dbend
 00CC                   .dbfile H:\mega128开发板rev1.1\开发板程序\ds18b20温度+数码管显示程序\ds18b20.h
 00CC                   .dbfunc e resetDS18B20 _resetDS18B20 fc
 00CC           ;        errTime -> R10
                        .even
 00CC           _resetDS18B20::
 00CC AA92              st -y,R10
 00CE                   .dbline -1
 00CE                   .dbline 20
 00CE           ; /*--------------------------------------------------*/
 00CE           ; /*             AVR-ARM开发网论坛                    */
 00CE           ; /*           http://www.avrarm.com                  */
 00CE           ; /*            AVR生成代码测试程序                   */
 00CE           ; /*--------------------------------------------------*/
 00CE           ; /*     程序由AVR辅助开发工具V2.1.1自动生成          */
 00CE           ; /*     AVR系统的处理器为:   ATMega128               */
 00CE           ; /*     AVR系统的晶振频率:   8.0000 Mhz             */
 00CE           ; /*--------------------------------------------------*/
 00CE           ; 
 00CE           ; #include "define.h"
 00CE           ; #include "delay.h"
 00CE           ; 
 00CE           ; 
 00CE           ; /**********************************************************************
 00CE           ; functionName: unsigned char resetDS18B20(void)
 00CE           ; description :DS18B20初始化
 00CE           ; **********************************************************************/
 00CE           ; unsigned char resetDS18B20(void)
 00CE           ; {
 00CE                   .dbline 21
 00CE           ;       unsigned char errTime=0;
 00CE AA24              clr R10
 00D0                   .dbline 22
 00D0           ;       RLS_DS18B20;            //释放总线
 00D0 1298              cbi 0x2,2
 00D2                   .dbline 23
 00D2           ;       _NOP();
 00D2 0000              nop
 00D4                   .dbline 24
 00D4           ;       HLD_DS18B20;            //Maga16控制总线
 00D4 129A              sbi 0x2,2
 00D6                   .dbline 25
 00D6           ;       CLR_DS18B20;            //强制拉低
 00D6 1A98              cbi 0x3,2
 00D8                   .dbline 26
 00D8           ;       Delay_Us(480);  //209.42us
 00D8 00EE              ldi R16,480
 00DA 11E0              ldi R17,1
 00DC 94DF              xcall _Delay_Us
 00DE                   .dbline 28
 00DE           ;       //以上延时大于480us
 00DE           ;       RLS_DS18B20;            //释放总线,总线自动上拉
 00DE 1298              cbi 0x2,2
 00E0                   .dbline 29
 00E0           ;       _NOP();
 00E0 0000              nop
 00E2 09C0              xjmp L33
 00E4           L32:
 00E4                   .dbline 31
 00E4           ;       while(STU_DS18B20)
 00E4           ;       {
 00E4                   .dbline 32
 00E4           ;          Delay_Us(6); //5.15us
 00E4 06E0              ldi R16,6
 00E6 10E0              ldi R17,0
 00E8 8EDF              xcall _Delay_Us
 00EA                   .dbline 33
 00EA           ;          errTime++;
 00EA A394              inc R10
 00EC                   .dbline 34
 00EC           ;          if(errTime>20)
 00EC 84E1              ldi R24,20
 00EE 8A15              cp R24,R10
 00F0 10F4              brsh L35
 00F2           X6:
 00F2                   .dbline 35
 00F2           ;                 return(0x00);         //如果等带大于约 5.15us*20就返回0x00,报告复位失败(实际上只要等待15-60us)
 00F2 0027              clr R16
 00F4 10C0              xjmp L31
 00F6           L35:
 00F6                   .dbline 36
 00F6           ;       }
 00F6           L33:
 00F6                   .dbline 30
 00F6 0A99              sbic 0x1,2
 00F8 F5CF              rjmp L32
 00FA           X7:
 00FA                   .dbline 37
 00FA           ;       errTime=0;
 00FA AA24              clr R10
 00FC 09C0              xjmp L38
 00FE           L37:
 00FE                   .dbline 39
 00FE           ;       while(!(STU_DS18B20))
 00FE           ;       {
 00FE                   .dbline 40
 00FE           ;          Delay_Us(6); //5.15us
 00FE 06E0              ldi R16,6
 0100 10E0              ldi R17,0
 0102 81DF              xcall _Delay_Us
 0104                   .dbline 41
 0104           ;          errTime++;
 0104 A394              inc R10
 0106                   .dbline 42
 0106           ;          if(errTime>50)
 0106 82E3              ldi R24,50
 0108 8A15              cp R24,R10
 010A 10F4              brsh L40
 010C           X8:
 010C                   .dbline 43
 010C           ;                 return(0x00);         //如果等带大于约 5.15us*50就返回0x00,报告复位失败(实际上只要等待60-240us)
 010C 0027              clr R16
 010E 03C0              xjmp L31
 0110           L40:
 0110                   .dbline 44
 0110           ;       }
 0110           L38:
 0110                   .dbline 38
 0110 0A9B              sbis 0x1,2
 0112 F5CF              rjmp L37
 0114           X9:
 0114                   .dbline 45
 0114           ;       return(0xff);
 0114 0FEF              ldi R16,255
 0116                   .dbline -2
 0116           L31:
 0116                   .dbline 0 ; func end
 0116 A990              ld R10,y+
 0118 0895              ret
 011A                   .dbsym r errTime 10 c
 011A                   .dbend
 011A                   .dbfunc e readByteDS18B20 _readByteDS18B20 fc
 011A           ;         retVal -> R20
 011A           ;              i -> R22
                        .even
 011A           _readByteDS18B20::
 011A 4A93              st -y,R20
 011C 6A93              st -y,R22
 011E                   .dbline -1
 011E                   .dbline 54
 011E           ; 
 011E           ; }
 011E           ; 
 011E           ; /**********************************************************************
 011E           ; functionName: unsigned char readByteDS18B20(void)
 011E           ; description :读DS18B20一个字节
 011E           ; **********************************************************************/
 011E           ; unsigned char readByteDS18B20(void)
 011E           ; {
 011E                   .dbline 56
 011E           ;       unsigned char i;
 011E           ;       unsigned char retVal=0;
 011E 4427              clr R20
 0120                   .dbline 57
 0120           ;       RLS_DS18B20;            //释放总线
 0120 1298              cbi 0x2,2
 0122                   .dbline 58
 0122           ;       for(i=8;i>0;i--)
 0122 68E0              ldi R22,8
 0124 11C0              xjmp L46
 0126           L43:
 0126                   .dbline 59
 0126           ;       {
 0126                   .dbline 60
 0126           ;          retVal>>=1;
 0126 4695              lsr R20
 0128                   .dbline 61
 0128           ;          HLD_DS18B20;         //Maga16控制总线
 0128 129A              sbi 0x2,2
 012A                   .dbline 62
 012A           ;          CLR_DS18B20;         //强制拉低
 012A 1A98              cbi 0x3,2
 012C                   .dbline 63
 012C           ;          Delay_Us(8); //延时大于1us
 012C 08E0              ldi R16,8
 012E 10E0              ldi R17,0
 0130 6ADF              xcall _Delay_Us
 0132                   .dbline 64
 0132           ;          SET_DS18B20;         //释放总线,DS18B20会将总线强制拉低
 0132 1A9A              sbi 0x3,2
 0134                   .dbline 66
 0134           ;          //delay_nus(8);
 0134           ;          RLS_DS18B20;          //释放总线
 0134 1298              cbi 0x2,2
 0136                   .dbline 67
 0136           ;          if(STU_DS18B20)
 0136 0A9B              sbis 0x1,2
 0138 01C0              rjmp L47
 013A           X10:
 013A                   .dbline 68
 013A           ;                 retVal|=0x80;
 013A 4068              ori R20,128
 013C           L47:
 013C                   .dbline 69
 013C           ;          Delay_Us(32);                 //31us
 013C 00E2              ldi R16,32
 013E 10E0              ldi R17,0
 0140 62DF              xcall _Delay_Us
 0142                   .dbline 70
 0142           ;          HLD_DS18B20;          //释放总线
 0142 129A              sbi 0x2,2
 0144                   .dbline 71
 0144           ;          SET_DS18B20;         //释放总线,DS18B20会将总线强制拉低
 0144 1A9A              sbi 0x3,2
 0146                   .dbline 73
 0146           ;          //delay_nus(30);      //30.38us
 0146           ;       }
 0146           L44:
 0146                   .dbline 58
 0146 6A95              dec R22
 0148           L46:
 0148                   .dbline 58
 0148 80E0              ldi R24,0
 014A 8617              cp R24,R22
 014C 60F3              brlo L43
 014E           X11:
 014E                   .dbline 74
 014E           ;       Delay_Us(5);             //2.71us(大于1us就行了)
 014E 05E0              ldi R16,5
 0150 10E0              ldi R17,0
 0152 59DF              xcall _Delay_Us
 0154                   .dbline 75
 0154           ;       return(retVal);
 0154 042F              mov R16,R20
 0156                   .dbline -2
 0156           L42:
 0156                   .dbline 0 ; func end
 0156 6991              ld R22,y+
 0158 4991              ld R20,y+
 015A 0895              ret
 015C                   .dbsym r retVal 20 c
 015C                   .dbsym r i 22 c
 015C                   .dbend
 015C                   .dbfunc e writeByteDS18B20 _writeByteDS18B20 fV
 015C           ;           temp -> R22
 015C           ;              i -> R20
 015C           ;             wb -> R10
                        .even
 015C           _writeByteDS18B20::
 015C 0E940000          xcall push_xgsetF00C
 0160 A02E              mov R10,R16
 0162                   .dbline -1
 0162                   .dbline 84
 0162           ; 
 0162           ; }
 0162           ; 
 0162           ; /**********************************************************************
 0162           ; functionName: unsigned char readByteDS18B20(void)
 0162           ; description :写DS18B20一个字节
 0162           ; **********************************************************************/
 0162           ; void writeByteDS18B20(unsigned char wb)
 0162           ; {
 0162                   .dbline 87
 0162           ;       unsigned char i;
 0162           ;       unsigned char temp;
 0162           ;       RLS_DS18B20;                     //释放总线
 0162 1298              cbi 0x2,2
 0164                   .dbline 88
 0164           ;       for(i=0;i<8;i++)
 0164 4427              clr R20
 0166 17C0              xjmp L53
 0168           L50:
 0168                   .dbline 89
 0168           ;       {
 0168                   .dbline 90
 0168           ;          HLD_DS18B20;          //Maga16控制总线
 0168 129A              sbi 0x2,2
 016A                   .dbline 91
 016A           ;          CLR_DS18B20;          //强制拉低
 016A 1A98              cbi 0x3,2
 016C                   .dbline 92
 016C           ;          Delay_Us(4);  //14.92us
 016C 04E0              ldi R16,4
 016E 10E0              ldi R17,0
 0170 4ADF              xcall _Delay_Us
 0172                   .dbline 95
 0172           ;          //SET_DS18B20;                //释放总线
 0172           ;          //delay_nus(16);      //14.92us

⌨️ 快捷键说明

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