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

📄 ds1302_main.lis

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

⌨️ 快捷键说明

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