📄 funcs.lis
字号:
01CC .dbline 131
01CC 6330 cpi R22,3
01CE 98F3 brlo L35
01D0 .dbline 136
01D0 ; {
01D0 ; time[i*2]=DS1302_readD(addr|RD); // 秒 分 时 日 月 星期 年
01D0 ; addr+=2;
01D0 ; }
01D0 ; PORTB&=~BIT(RTC_CLK); //拉低时钟端(时钟端在不操作时为低)
01D0 C798 cbi 0x18,7
01D2 .dbline -2
01D2 .dbline 137
01D2 ; }
01D2 L34:
01D2 0E940000 xcall pop_gset3
01D6 .dbline 0 ; func end
01D6 0895 ret
01D8 .dbsym r addr 20 c
01D8 .dbsym r i 22 c
01D8 .dbsym r time 10 pc
01D8 .dbend
01D8 .dbfunc e One_smg_display _One_smg_display fV
01D8 ; number -> R20
01D8 ; data -> R22
.even
01D8 _One_smg_display::
01D8 0E940000 xcall push_gset2
01DC 422F mov R20,R18
01DE 602F mov R22,R16
01E0 .dbline -1
01E0 .dbline 147
01E0 ;
01E0 ; /*******************************************
01E0 ; 函数名称: One_smg_display
01E0 ; 功 能: 指定的数码管显示指定的内容
01E0 ; 参 数: data--显示的内容(0-15)
01E0 ; number--指定的数码管(1-6)
01E0 ; 返回值 : 无
01E0 ; /********************************************/
01E0 ; void One_smg_display(uchar data,uchar number)
01E0 ; {
01E0 .dbline 148
01E0 ; PORTB|=0x3F; //输出位选
01E0 88B3 in R24,0x18
01E2 8F63 ori R24,63
01E4 88BB out 0x18,R24
01E6 .dbline 149
01E6 ; PORTA|=BIT(BITLK); //更新位选
01E6 DC9A sbi 0x1b,4
01E8 .dbline 151
01E8 ; //Delayus(50); //调整时序
01E8 ; PORTA&=~BIT(BITLK); //锁存位选
01E8 DC98 cbi 0x1b,4
01EA .dbline 153
01EA ;
01EA ; PORTB=SEGMENT[data]; //输出段选
01EA 82E0 ldi R24,2
01EC 869F mul R24,R22
01EE F001 movw R30,R0
01F0 80E0 ldi R24,<_SEGMENT
01F2 90E0 ldi R25,>_SEGMENT
01F4 E80F add R30,R24
01F6 F91F adc R31,R25
01F8 0590 lpm R0,Z+
01FA 1490 lpm R1,Z
01FC F001 movw R30,R0
01FE E8BB out 0x18,R30
0200 .dbline 154
0200 ; PORTA|=BIT(SEGLK); //更新段选
0200 DB9A sbi 0x1b,3
0202 .dbline 156
0202 ; //Delayus(50); //调整时序
0202 ; PORTA&=~BIT(SEGLK); //锁存段选
0202 DB98 cbi 0x1b,3
0204 .dbline 158
0204 ;
0204 ; number=~BIT(number-1); //调整位选(指定时是1~6,而操作的时候是0~5)
0204 142F mov R17,R20
0206 1150 subi R17,1
0208 01E0 ldi R16,1
020A 0E940000 xcall lsl8
020E 402F mov R20,R16
0210 4095 com R20
0212 .dbline 159
0212 ; PORTB=number; //输出位选
0212 48BB out 0x18,R20
0214 .dbline 160
0214 ; PORTA|=BIT(BITLK); //更新位选
0214 DC9A sbi 0x1b,4
0216 .dbline 162
0216 ; //Delayus(50); //调整时序
0216 ; PORTA&=~BIT(BITLK); //锁存位选
0216 DC98 cbi 0x1b,4
0218 .dbline -2
0218 .dbline 163
0218 ; }
0218 L39:
0218 0E940000 xcall pop_gset2
021C .dbline 0 ; func end
021C 0895 ret
021E .dbsym r number 20 c
021E .dbsym r data 22 c
021E .dbend
021E .dbfunc e All_smg_display _All_smg_display fV
021E ; i -> R20
021E ; pdata -> R22,R23
.even
021E _All_smg_display::
021E 0E940000 xcall push_gset2
0222 B801 movw R22,R16
0224 .dbline -1
0224 .dbline 171
0224 ; /*******************************************
0224 ; 函数名称: All_smg_display
0224 ; 功 能: 6个数码管显示指定的内容
0224 ; 参 数: *pdata--显示内容数组地址
0224 ; 返回值 : 无
0224 ; /********************************************/
0224 ; void All_smg_display(uchar *pdata)
0224 ; {
0224 .dbline 173
0224 ; uchar i;
0224 ; for(i=0;i<6;i++)
0224 4427 clr R20
0226 10C0 xjmp L44
0228 L41:
0228 .dbline 174
0228 .dbline 175
0228 242F mov R18,R20
022A 2F5F subi R18,255 ; addi 1
022C 242E mov R2,R20
022E 3324 clr R3
0230 E5E0 ldi R30,5
0232 F0E0 ldi R31,0
0234 E219 sub R30,R2
0236 F309 sbc R31,R3
0238 E60F add R30,R22
023A F71F adc R31,R23
023C 0081 ldd R16,z+0
023E CCDF xcall _One_smg_display
0240 .dbline 176
0240 03E0 ldi R16,3
0242 10E0 ldi R17,0
0244 F5DE xcall _Delayms
0246 .dbline 177
0246 L42:
0246 .dbline 173
0246 4395 inc R20
0248 L44:
0248 .dbline 173
0248 4630 cpi R20,6
024A 70F3 brlo L41
024C .dbline -2
024C .dbline 178
024C ; {
024C ; One_smg_display(pdata[5-i],i+1);
024C ; Delayms(3);
024C ; }
024C ; }
024C L40:
024C 0E940000 xcall pop_gset2
0250 .dbline 0 ; func end
0250 0895 ret
0252 .dbsym r i 20 c
0252 .dbsym r pdata 22 pc
0252 .dbend
0252 .dbfunc e One_led _One_led fV
0252 ; i -> <dead>
0252 ; light -> R22
0252 ; number -> R20
.even
0252 _One_led::
0252 0E940000 xcall push_gset2
0256 622F mov R22,R18
0258 402F mov R20,R16
025A .dbline -1
025A .dbline 188
025A ;
025A ; /*******************************************
025A ; 函数名称: One_led
025A ; 功 能: 点亮或者熄灭指定的LED
025A ; 参 数: number--指定的LED
025A ; light--为TRUE的时候为点亮LED,为FALSE的时候为熄灭LED
025A ; 返回值 : 无
025A ; /********************************************/
025A ; void One_led(uchar number,uchar light)
025A ; {
025A .dbline 190
025A ; uchar i;
025A ; if(light==TRUE) //点亮操作
025A 6130 cpi R22,1
025C 61F4 brne L46
025E .dbline 191
025E ; {
025E .dbline 192
025E ; PORTB&=~BIT(number); //输出数据
025E 01E0 ldi R16,1
0260 142F mov R17,R20
0262 0E940000 xcall lsl8
0266 202E mov R2,R16
0268 2094 com R2
026A 38B2 in R3,0x18
026C 3220 and R3,R2
026E 38BA out 0x18,R3
0270 .dbline 193
0270 ; PORTA|=BIT(LEDLK); //更新数据
0270 DA9A sbi 0x1b,2
0272 .dbline 195
0272 ; //Delayms(5); //调整时序
0272 ; PORTA&=~BIT(LEDLK); //锁存数据
0272 DA98 cbi 0x1b,2
0274 .dbline 196
0274 ; }
0274 09C0 xjmp L47
0276 L46:
0276 .dbline 198
0276 .dbline 199
0276 01E0 ldi R16,1
0278 142F mov R17,R20
027A 0E940000 xcall lsl8
027E 28B2 in R2,0x18
0280 202A or R2,R16
0282 28BA out 0x18,R2
0284 .dbline 200
0284 DA9A sbi 0x1b,2
0286 .dbline 202
0286 DA98 cbi 0x1b,2
0288 .dbline 203
0288 L47:
0288 .dbline -2
0288 .dbline 204
0288 ; else
0288 ; {
0288 ; PORTB|=BIT(number); //输出数据
0288 ; PORTA|=BIT(LEDLK); //更新数据
0288 ; //Delayms(5); //调整时序
0288 ; PORTA&=~BIT(LEDLK); //锁存数据
0288 ; }
0288 ; }
0288 L45:
0288 0E940000 xcall pop_gset2
028C .dbline 0 ; func end
028C 0895 ret
028E .dbsym l i 1 c
028E .dbsym r light 22 c
028E .dbsym r number 20 c
028E .dbend
028E .dbfunc e All_led _All_led fV
028E ; light -> R16
.even
028E _All_led::
028E .dbline -1
028E .dbline 212
028E ; /*******************************************
028E ; 函数名称: All_led
028E ; 功 能: 点亮或者熄灭全部LED
028E ; 参 数: light--为TRUE的时候为点亮全部LED,为FALSE的时候为熄灭全部LED
028E ; 返回值 : 无
028E ; /********************************************/
028E ; void All_led(uchar light)
028E ; {
028E .dbline 213
028E ; if(light)
028E 0023 tst R16
0290 31F0 breq L49
0292 .dbline 214
0292 ; {
0292 .dbline 215
0292 ; PORTB&=~ALLLED;
0292 88B3 in R24,0x18
0294 8070 andi R24,0
0296 88BB out 0x18,R24
0298 .dbline 216
0298 ; PORTA|=BIT(LEDLK);
0298 DA9A sbi 0x1b,2
029A .dbline 218
029A ; //Delayms(5);
029A ; PORTA&=~BIT(LEDLK);
029A DA98 cbi 0x1b,2
029C .dbline 219
029C ; }
029C 05C0 xjmp L50
029E L49:
029E .dbline 221
029E .dbline 222
029E 88B3 in R24,0x18
02A0 8F6F ori R24,255
02A2 88BB out 0x18,R24
02A4 .dbline 223
02A4 DA9A sbi 0x1b,2
02A6 .dbline 225
02A6 DA98 cbi 0x1b,2
02A8 .dbline 226
02A8 L50:
02A8 .dbline -2
02A8 .dbline 227
02A8 ; else
02A8 ; {
02A8 ; PORTB|=ALLLED;
02A8 ; PORTA|=BIT(LEDLK);
02A8 ; //Delayms(5);
02A8 ; PORTA&=~BIT(LEDLK);
02A8 ; }
02A8 ; }
02A8 L48:
02A8 .dbline 0 ; func end
02A8 0895 ret
02AA .dbsym r light 16 c
02AA .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -