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

📄 ds18b20_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01E4           ; }
 01E4           ; 
 01E4           ; //1602初始化
 01E4           ; void  LcdInit(void)
 01E4           ; {
 01E4                   .dbline 59
 01E4           ;     DDRD = 0xff; 
 01E4 8FEF              ldi R24,255
 01E6 81BB              out 0x11,R24
 01E8                   .dbline 60
 01E8           ;     PORTD = 0x00; 
 01E8 2224              clr R2
 01EA 22BA              out 0x12,R2
 01EC                   .dbline 61
 01EC           ;       writecom(0x38);
 01EC 08E3              ldi R16,56
 01EE DEDF              xcall _writecom
 01F0                   .dbline 62
 01F0           ;       s_ms(1000);
 01F0 08EE              ldi R16,1000
 01F2 13E0              ldi R17,3
 01F4 A7DF              xcall _s_ms
 01F6                   .dbline 63
 01F6           ;       writecom(0x01);
 01F6 01E0              ldi R16,1
 01F8 D9DF              xcall _writecom
 01FA                   .dbline 64
 01FA           ;       s_ms(1000);
 01FA 08EE              ldi R16,1000
 01FC 13E0              ldi R17,3
 01FE A2DF              xcall _s_ms
 0200                   .dbline 65
 0200           ;       s_ms(1000);
 0200 08EE              ldi R16,1000
 0202 13E0              ldi R17,3
 0204 9FDF              xcall _s_ms
 0206                   .dbline 66
 0206           ;       s_ms(1000);
 0206 08EE              ldi R16,1000
 0208 13E0              ldi R17,3
 020A 9CDF              xcall _s_ms
 020C                   .dbline 67
 020C           ;       s_ms(1000);
 020C 08EE              ldi R16,1000
 020E 13E0              ldi R17,3
 0210 99DF              xcall _s_ms
 0212                   .dbline 68
 0212           ;       s_ms(1000);
 0212 08EE              ldi R16,1000
 0214 13E0              ldi R17,3
 0216 96DF              xcall _s_ms
 0218                   .dbline 69
 0218           ;       s_ms(1000);
 0218 08EE              ldi R16,1000
 021A 13E0              ldi R17,3
 021C 93DF              xcall _s_ms
 021E                   .dbline 70
 021E           ;       s_ms(1000);
 021E 08EE              ldi R16,1000
 0220 13E0              ldi R17,3
 0222 90DF              xcall _s_ms
 0224                   .dbline 71
 0224           ;       writecom(0x02);
 0224 02E0              ldi R16,2
 0226 C2DF              xcall _writecom
 0228                   .dbline 72
 0228           ;       s_ms(1000);
 0228 08EE              ldi R16,1000
 022A 13E0              ldi R17,3
 022C 8BDF              xcall _s_ms
 022E                   .dbline 73
 022E           ;       writecom(0x06);
 022E 06E0              ldi R16,6
 0230 BDDF              xcall _writecom
 0232                   .dbline 74
 0232           ;       s_ms(1000);
 0232 08EE              ldi R16,1000
 0234 13E0              ldi R17,3
 0236 86DF              xcall _s_ms
 0238                   .dbline 75
 0238           ;       writecom(0x0c);
 0238 0CE0              ldi R16,12
 023A B8DF              xcall _writecom
 023C                   .dbline 76
 023C           ;       s_ms(1000);
 023C 08EE              ldi R16,1000
 023E 13E0              ldi R17,3
 0240 81DF              xcall _s_ms
 0242                   .dbline 77
 0242           ;       writecom(0x38); 
 0242 08E3              ldi R16,56
 0244 B3DF              xcall _writecom
 0246                   .dbline 78
 0246           ;       s_ms(1000);
 0246 08EE              ldi R16,1000
 0248 13E0              ldi R17,3
 024A 7CDF              xcall _s_ms
 024C                   .dbline -2
 024C           L48:
 024C                   .dbline 0 ; func end
 024C 0895              ret
 024E                   .dbend
 024E                   .dbfunc e writedata _writedata fV
 024E           ;           data -> R10
                        .even
 024E           _writedata::
 024E AA92              st -y,R10
 0250 A02E              mov R10,R16
 0252                   .dbline -1
 0252                   .dbline 83
 0252           ; }     
 0252           ; 
 0252           ; //写数据
 0252           ; void  writedata(uchar data)
 0252           ; {
 0252                   .dbline 84
 0252           ;       busy();
 0252 81DF              xcall _busy
 0254                   .dbline 85
 0254           ;       s_ms(500);
 0254 04EF              ldi R16,500
 0256 11E0              ldi R17,1
 0258 75DF              xcall _s_ms
 025A                   .dbline 86
 025A           ;       PORTA|=(1<<RS);   //RS=1
 025A DD9A              sbi 0x1b,5
 025C                   .dbline 87
 025C           ;       s_ms(500);
 025C 04EF              ldi R16,500
 025E 11E0              ldi R17,1
 0260 71DF              xcall _s_ms
 0262                   .dbline 88
 0262           ;       PORTA&=~(1<<RW);   //RW=0
 0262 DE98              cbi 0x1b,6
 0264                   .dbline 89
 0264           ;       s_ms(500);
 0264 04EF              ldi R16,500
 0266 11E0              ldi R17,1
 0268 6DDF              xcall _s_ms
 026A                   .dbline 90
 026A           ;       PORTA|=(1<<EN);    //EN=1
 026A DF9A              sbi 0x1b,7
 026C                   .dbline 91
 026C           ;       s_ms(500);
 026C 04EF              ldi R16,500
 026E 11E0              ldi R17,1
 0270 69DF              xcall _s_ms
 0272                   .dbline 92
 0272           ;       PORTD = data;      //输出数据
 0272 A2BA              out 0x12,R10
 0274                   .dbline 93
 0274           ;       s_ms(500);
 0274 04EF              ldi R16,500
 0276 11E0              ldi R17,1
 0278 65DF              xcall _s_ms
 027A                   .dbline 94
 027A           ;       PORTA&=~(1<<EN);   //EN=0
 027A DF98              cbi 0x1b,7
 027C                   .dbline 95
 027C           ;       s_ms(500);
 027C 04EF              ldi R16,500
 027E 11E0              ldi R17,1
 0280 61DF              xcall _s_ms
 0282                   .dbline -2
 0282           L49:
 0282                   .dbline 0 ; func end
 0282 A990              ld R10,y+
 0284 0895              ret
 0286                   .dbsym r data 10 c
 0286                   .dbend
 0286                   .dbfunc e readdata _readdata fc
 0286           ;           temp -> R10
                        .even
 0286           _readdata::
 0286 AA92              st -y,R10
 0288                   .dbline -1
 0288                   .dbline 101
 0288           ; }
 0288           ; 
 0288           ; 
 0288           ; //读数据
 0288           ; uchar readdata(void)
 0288           ; {
 0288                   .dbline 103
 0288           ;       uchar temp;
 0288           ;       busy();
 0288 66DF              xcall _busy
 028A                   .dbline 104
 028A           ;       s_ms(500);
 028A 04EF              ldi R16,500
 028C 11E0              ldi R17,1
 028E 5ADF              xcall _s_ms
 0290                   .dbline 105
 0290           ;       PORTA|=(1<<RS);  //RS=1
 0290 DD9A              sbi 0x1b,5
 0292                   .dbline 106
 0292           ;       s_ms(500);
 0292 04EF              ldi R16,500
 0294 11E0              ldi R17,1
 0296 56DF              xcall _s_ms
 0298                   .dbline 107
 0298           ;       PORTA|=(1<<RW);  //RW=1
 0298 DE9A              sbi 0x1b,6
 029A                   .dbline 108
 029A           ;       s_ms(500);
 029A 04EF              ldi R16,500
 029C 11E0              ldi R17,1
 029E 52DF              xcall _s_ms
 02A0                   .dbline 109
 02A0           ;       PORTA|=(1<<EN);  //EN=1
 02A0 DF9A              sbi 0x1b,7
 02A2                   .dbline 110
 02A2           ;       s_ms(500);
 02A2 04EF              ldi R16,500
 02A4 11E0              ldi R17,1
 02A6 4EDF              xcall _s_ms
 02A8                   .dbline 111
 02A8           ;       DDRD=0x00;       //A端口变输入
 02A8 2224              clr R2
 02AA 21BA              out 0x11,R2
 02AC                   .dbline 112
 02AC           ;       s_ms(500);
 02AC 04EF              ldi R16,500
 02AE 11E0              ldi R17,1
 02B0 49DF              xcall _s_ms
 02B2                   .dbline 113
 02B2           ;       temp = PIND;     //读A端口
 02B2 A0B2              in R10,0x10
 02B4                   .dbline 114
 02B4           ;       s_ms(500);
 02B4 04EF              ldi R16,500
 02B6 11E0              ldi R17,1
 02B8 45DF              xcall _s_ms
 02BA                   .dbline 115
 02BA           ;       DDRD=0xff;       //A端口变输出
 02BA 8FEF              ldi R24,255
 02BC 81BB              out 0x11,R24
 02BE                   .dbline 116
 02BE           ;       s_ms(500);
 02BE 04EF              ldi R16,500
 02C0 11E0              ldi R17,1
 02C2 40DF              xcall _s_ms
 02C4                   .dbline 117
 02C4           ;       PORTA&=~(1<<EN); //EN=0
 02C4 DF98              cbi 0x1b,7
 02C6                   .dbline 118
 02C6           ;       s_ms(500);
 02C6 04EF              ldi R16,500
 02C8 11E0              ldi R17,1
 02CA 3CDF              xcall _s_ms
 02CC                   .dbline 119
 02CC           ;       return temp;    
 02CC 0A2D              mov R16,R10
 02CE                   .dbline -2
 02CE           L50:
 02CE                   .dbline 0 ; func end
 02CE A990              ld R10,y+
 02D0 0895              ret
 02D2                   .dbsym r temp 10 c
 02D2                   .dbend
 02D2                   .dbfunc e WriteCGRAM _WriteCGRAM fV
 02D2           ;              t -> R10,R11
 02D2           ;              i -> R20,R21
 02D2           ;        pBuffer -> R22,R23
 02D2           ;            num -> R10,R11
                        .even
 02D2           _WriteCGRAM::
 02D2 0E940000          xcall push_xgsetF00C
 02D6 B901              movw R22,R18
 02D8 5801              movw R10,R16
 02DA                   .dbline -1
 02DA                   .dbline 129
 02DA           ; }
 02DA           ; 
 02DA           ; //=================================================
 02DA           ; // 描述: 写LCD内部CGRAM函数
 02DA           ; // 入口: ‘num’要写的数据个数
 02DA           ; //        ‘pbuffer’要写的数据的首地址
 02DA           ; // 出口: 无
 02DA           ; //================================================
 02DA           ; void  WriteCGRAM(uint num, const uint *pBuffer)
 02DA           ; {
 02DA                   .dbline 131
 02DA           ;       uint    i,t;
 02DA           ;       writecom(0x40);
 02DA 00E4              ldi R16,64
 02DC 67DF              xcall _writecom
 02DE                   .dbline 132
 02DE           ;       PORTA|=(1<<RS);
 02DE DD9A              sbi 0x1b,5
 02E0                   .dbline 133
 02E0           ;       PORTA&=~(1<<RW);
 02E0 DE98              cbi 0x1b,6
 02E2                   .dbline 134
 02E2           ;       for(i=num;i!=0;i--)
 02E2 A501              movw R20,R10
 02E4 0AC0              xjmp L55
 02E6           L52:
 02E6                   .dbline 135
 02E6           ;       {
 02E6                   .dbline 136
 02E6           ;               t = *pBuffer;
 02E6 FB01              movw R30,R22
 02E8 A590              lpm R10,Z+
 02EA B490              lpm R11,Z
 02EC                   .dbline 137
 02EC           ;               PORTA|=(1<<EN);
 02EC DF9A              sbi 0x1b,7
 02EE                   .dbline 138
 02EE           ;               PORTD = t;
 02EE A2BA              out 0x12,R10
 02F0                   .dbline 139
 02F0           ;               PORTA&=~(1<<EN);                                
 02F0 DF98              cbi 0x1b,7
 02F2                   .dbline 140
 02F2           ;               pBuffer++;
 02F2 6E5F              subi R22,254  ; offset = 2
 02F4 7F4F              sbci R23,255
 02F6                   .dbline 141
 02F6           ;       }
 02F6           L53:
 02F6                   .dbline 134
 02F6 4150              subi R20,1
 02F8 5040              sbci R21,0
 02FA           L55:
 02FA                   .dbline 134
 02FA 4030              cpi R20,0
 02FC 4507              cpc R20,R21
 02FE 99F7              brne L52
 0300           X12:
 0300                   .dbline -2
 0300           L51:
 0300                   .dbline 0 ; func end
 0300 0C940000          xjmp pop_xgsetF00C
 0304                   .dbsym r t 10 i
 0304                   .dbsym r i 20 i
 0304                   .dbsym r pBuffer 22 pki
 0304                   .dbsym r num 10 i
 0304                   .dbend
 0304                   .dbfunc e WriteMenu _WriteMenu fV
 0304           ;              t -> R10
 0304           ;              i -> R22
 0304           ;        pBuffer -> R20,R21
                        .even
 0304           _WriteMenu::

⌨️ 快捷键说明

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