📄 avrstudy.lis
字号:
009A .dbsym r Cbyte 20 c
009A .dbend
009A .dbfunc e WriteData _WriteData fV
009A ; Dbyte -> R20
.even
009A _WriteData::
009A 00D0 rcall push_gset1
009C 402F mov R20,R16
009E .dbline -1
009E .dbline 86
009E ; spi_init();
009E ; Init_int(); //中断初始化
009E ; LcmInit(); //液晶初始化
009E ; Delay(10);
009E .dbline 87
009E ; twi_init(); //TWI初始化
009E E8DF rcall _CheckBusy
00A0 .dbline 88
00A0 ; PORTB=0xff; //背光口开
00A0 0AEF ldi R16,250
00A2 AEDF rcall _SendByte
00A4 .dbline 89
00A4 ; LCD_ON; //开液晶背光显示
00A4 042F mov R16,R20
00A6 007F andi R16,240
00A8 ABDF rcall _SendByte
00AA .dbline 90
00AA ; DS1302_portinit(); //初始化DS1302的三根数据线
00AA 042F mov R16,R20
00AC 0F70 andi R16,#0x0F
00AE 0295 swap R16
00B0 007F andi R16,240
00B2 A6DF rcall _SendByte
00B4 .dbline -2
00B4 L26:
00B4 00D0 rcall pop_gset1
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbsym r Dbyte 20 c
00B8 .dbend
00B8 .dbfunc e ReadData _ReadData fc
.even
00B8 _ReadData::
00B8 .dbline -1
00B8 .dbline 94
00B8 ; //DS1302_init(); //启动振荡器,DS1302开始工作
00B8 ; //DS1302_setT(settime); //设置初始时间
00B8 ; while(1)
00B8 ; {
00B8 .dbline 95
00B8 ; PutStr(0,0,"DS1302时钟显示");
00B8 DBDF rcall _CheckBusy
00BA .dbline 96
00BA ; PutStr(0,0,str1);
00BA 0EEF ldi R16,254
00BC A1DF rcall _SendByte
00BE .dbline 97
00BE ; Delay(10);
00BE B0DF rcall _ReceiveByte
00C0 .dbline -2
00C0 L27:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
00C2 .dbfunc e Delay _Delay fV
00C2 ; usn -> R20
00C2 ; us -> R22
00C2 ; MS -> R16,R17
.even
00C2 _Delay::
00C2 00D0 rcall push_gset2
00C4 .dbline -1
00C4 .dbline 101
00C4 ; PutStr(3,0,str2);
00C4 ; Delay(10);
00C4 ; while(exit1==0) //以下程序完成显示和设置时间
00C4 ; {
00C4 0CC0 rjmp L30
00C6 L29:
00C6 .dbline 104
00C6 ; DS1302_getT(gettime); //获得当前时间
00C6 ; Disp_time(gettime); //显示当前时间
00C6 ; delay(100);
00C6 .dbline 105
00C6 ; }
00C6 42E0 ldi R20,2
00C8 06C0 rjmp L33
00CA L32:
00CA .dbline 107
00CA ; exit1=0;
00CA ; exit2=0;
00CA .dbline 108
00CA ; enter1=0;
00CA 65EF ldi R22,245
00CC 01C0 rjmp L36
00CE L35:
00CE .dbline 109
00CE .dbline 109
00CE 6A95 dec R22
00D0 .dbline 109
00D0 L36:
00D0 .dbline 109
00D0 6623 tst R22
00D2 E9F7 brne L35
00D4 .dbline 109
00D4 .dbline 110
00D4 4A95 dec R20
00D6 .dbline 111
00D6 L33:
00D6 .dbline 106
00D6 4423 tst R20
00D8 C1F7 brne L32
00DA .dbline 112
00DA 0150 subi R16,1
00DC 1040 sbci R17,0
00DE .dbline 113
00DE L30:
00DE .dbline 103
00DE 0030 cpi R16,0
00E0 0107 cpc R16,R17
00E2 89F7 brne L29
00E4 X0:
00E4 .dbline -2
00E4 L28:
00E4 00D0 rcall pop_gset2
00E6 .dbline 0 ; func end
00E6 0895 ret
00E8 .dbsym r usn 20 c
00E8 .dbsym r us 22 c
00E8 .dbsym r MS 16 i
00E8 .dbend
00E8 .dbfunc e LcmInit _LcmInit fV
.even
00E8 _LcmInit::
00E8 .dbline -1
00E8 .dbline 117
00E8 ; number1=1;
00E8 ; LcmInit(); //液晶初始化
00E8 ; delay(10);
00E8 ; while(exit2==0)
00E8 ; {
00E8 ; switch(number1)
00E8 ; {
00E8 ; case 1:{PutStr(0,0,str3);}break;
00E8 ; case 2:{PutStr(0,0,str4);}break;
00E8 .dbline 118
00E8 ; case 3:{PutStr(0,0,str5);}break;
00E8 00E3 ldi R16,48
00EA C8DF rcall _WriteCommand
00EC .dbline 119
00EC ; case 4:{PutStr(0,0,str6);}break;
00EC 03E0 ldi R16,3
00EE C6DF rcall _WriteCommand
00F0 .dbline 120
00F0 ; case 5:{PutStr(0,0,str7);}break;
00F0 0CE0 ldi R16,12
00F2 C4DF rcall _WriteCommand
00F4 .dbline 121
00F4 ; case 6:{PutStr(0,0,str8);}break;
00F4 01E0 ldi R16,1
00F6 C2DF rcall _WriteCommand
00F8 .dbline 122
00F8 ; case 7:{PutStr(0,0,str9);}break;
00F8 06E0 ldi R16,6
00FA C0DF rcall _WriteCommand
00FC .dbline -2
00FC L38:
00FC .dbline 0 ; func end
00FC 0895 ret
00FE .dbend
00FE .dbfunc e LcmClearTXT _LcmClearTXT fV
.even
00FE _LcmClearTXT::
00FE .dbline -1
00FE .dbline 126
00FE ;
00FE ; }
00FE ; delay(100);
00FE ; if(enter1==1)
00FE .dbline 127
00FE ; {
00FE F4DF rcall _LcmInit
0100 .dbline -2
0100 L39:
0100 .dbline 0 ; func end
0100 0895 ret
0102 .dbend
0102 .dbfunc e LcmClearBMP _LcmClearBMP fV
0102 ; i -> R20
0102 ; j -> R22
.even
0102 _LcmClearBMP::
0102 00D0 rcall push_gset2
0104 .dbline -1
0104 .dbline 131
0104 ; exit1=0;
0104 ; LcmInit(); //液晶初始化
0104 ; delay(10);
0104 ; while(exit1==0)
0104 .dbline 133
0104 ; {
0104 ; switch(number1)
0104 04E3 ldi R16,52
0106 BADF rcall _WriteCommand
0108 .dbline 134
0108 ; {
0108 4427 clr R20
010A 0DC0 rjmp L44
010C L41:
010C .dbline 135
010C ; case 1:
010C .dbline 136
010C ; {
010C 042F mov R16,R20
010E 0068 ori R16,128
0110 B5DF rcall _WriteCommand
0112 .dbline 137
0112 ; PutStr(1,0,str10);
0112 00E8 ldi R16,128
0114 B3DF rcall _WriteCommand
0116 .dbline 138
0116 ; for(i=0;i<256;i++)
0116 6627 clr R22
0118 03C0 rjmp L48
011A L45:
011A .dbline 139
011A 0027 clr R16
011C BEDF rcall _WriteData
011E L46:
011E .dbline 138
011E 6395 inc R22
0120 L48:
0120 .dbline 138
0120 6032 cpi R22,32
0122 D8F3 brlo L45
0124 .dbline 140
0124 L42:
0124 .dbline 134
0124 4395 inc R20
0126 L44:
0126 .dbline 134
0126 4032 cpi R20,32
0128 88F3 brlo L41
012A .dbline -2
012A L40:
012A 00D0 rcall pop_gset2
012C .dbline 0 ; func end
012C 0895 ret
012E .dbsym r i 20 c
012E .dbsym r j 22 c
012E .dbend
012E .dbfunc e PutStr _PutStr fV
012E ; puts -> R20,R21
012E ; col -> R22
012E ; row -> R10
.even
012E _PutStr::
012E 00D0 rcall push_gset3
0130 622F mov R22,R18
0132 A02E mov R10,R16
0134 4E81 ldd R20,y+6
0136 5F81 ldd R21,y+7
0138 .dbline -1
0138 .dbline 145
0138 ; {
0138 ; senddat(i);
0138 ; delay(100);
0138 ; }
0138 ;
0138 ; }break;
0138 ; case 2:
0138 .dbline 146
0138 ; {
0138 00E3 ldi R16,48
013A A0DF rcall _WriteCommand
013C .dbline 147
013C ; for(i=0;i<7;i++)
013C 88E0 ldi R24,8
013E 8A9D mul R24,R10
0140 F001 movw R30,R0
0142 262E mov R2,R22
0144 3324 clr R3
0146 E20D add R30,R2
0148 F31D adc R31,R3
014A 80E0 ldi R24,<_AC_TABLE
014C 90E0 ldi R25,>_AC_TABLE
014E E80F add R30,R24
0150 F91F adc R31,R25
0152 0081 ldd R16,z+0
0154 93DF rcall _WriteCommand
0156 20C0 rjmp L51
0158 L50:
0158 .dbline 149
0158 ; {
0158 ; Put24c256BMP(i*1024);
0158 .dbline 150
0158 ; delay(500);
0158 6830 cpi R22,8
015A 11F4 brne L53
015C .dbline 151
015C ; if(exit1==1)i=7;
015C .dbline 152
015C ; }
015C 6627 clr R22
015E .dbline 153
015E ; LcmInit(); //液晶初始化
015E A394 inc R10
0160 .dbline 154
0160 ; delay(10);
0160 L53:
0160 .dbline 155
0160 ; }break;
0160 8A2D mov R24,R10
0162 8430 cpi R24,4
0164 09F4 brne L55
0166 .dbline 155
0166 AA24 clr R10
0168 L55:
0168 .dbline 156
0168 88E0 ldi R24,8
016A 8A9D mul R24,R10
016C F001 movw R30,R0
016E 262E mov R2,R22
0170 3324 clr R3
0172 E20D add R30,R2
0174 F31D adc R31,R3
0176 80E0 ldi R24,<_AC_TABLE
0178 90E0 ldi R25,>_AC_TABLE
017A E80F add R30,R24
017C F91F adc R31,R25
017E 0081 ldd R16,z+0
0180 7DDF rcall _WriteCommand
0182 .dbline 157
0182 FA01 movw R30,R20
0184 0081 ldd R16,z+0
0186 89DF rcall _WriteData
0188 .dbline 158
0188 4F5F subi R20,255 ; offset = 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -