📄 pro.s
字号:
; }
L25:
.dbline 159
; PORTB |=(1<<PB7); //74LS393清零
sbi 0x18,7
.dbline 160
; TCNT1H=0;
clr R2
out 0x2d,R2
.dbline 161
; TCNT1L=0; //清空T1计数器
out 0x2c,R2
.dbline 162
; PORTB &=~(1<<PB7); //使能计数功能
cbi 0x18,7
.dbline 163
; PORTB |=(1<<PB0); //打开闸门
sbi 0x18,0
.dbline 164
; TCNT2 = 0x80; //定时时间1秒
ldi R24,128
out 0x24,R24
.dbline 165
; TCCR1B = 0x06;
ldi R24,6
out 0x2e,R24
.dbline -2
L24:
xcall pop_gset2
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R27,y+
ld R26,y+
ld R25,y+
ld R24,y+
ld R19,y+
ld R18,y+
ld R17,y+
ld R16,y+
ld R9,y+
ld R8,y+
ld R7,y+
ld R6,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e PutChar _PutChar fV
; freq -> y+0
.even
_PutChar::
xcall push_gset2
sbiw R28,4
.dbline -1
.dbline 169
; }
;
; void PutChar()
; {
.dbline 170
; unsigned long freq=0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
.dbline 171
; freq=Freq;
lds R4,_Freq+2
lds R5,_Freq+2+1
lds R2,_Freq
lds R3,_Freq+1
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 172
; temp[0]= freq /10000000+0x30;
ldi R20,128
ldi R21,150
ldi R22,152
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp,R2
.dbline 173
; freq = freq %10000000;
ldi R20,128
ldi R21,150
ldi R22,152
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 174
; temp[1]=freq /1000000+0x30;
ldi R20,64
ldi R21,66
ldi R22,15
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+1,R2
.dbline 175
; freq =freq %1000000;
ldi R20,64
ldi R21,66
ldi R22,15
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 176
; temp[2]=freq /100000+0x30;
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+2,R2
.dbline 177
; freq =freq %100000;
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 178
; temp[3]=freq /10000+0x30;
ldi R20,16
ldi R21,39
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+3,R2
.dbline 179
; freq=freq %10000;
ldi R20,16
ldi R21,39
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 180
; temp[4]=freq /1000+0x30;
ldi R20,232
ldi R21,3
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+4,R2
.dbline 181
; freq=freq %1000;
ldi R20,232
ldi R21,3
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 182
; temp[5]=freq /100+0x30;
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+5,R2
.dbline 183
; freq=freq %100;
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 184
; temp[6]=freq /10 + 0x30;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+6,R2
.dbline 185
; temp[7]=freq %10 + 0x30;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _temp+7,R2
.dbline 187
;
; LCD12864_gotoXY(3,2);
ldi R18,2
ldi R16,3
xcall _LCD12864_gotoXY
.dbline 188
; LCD12864_sendstr(temp);
ldi R16,<_temp
ldi R17,>_temp
xcall _LCD12864_sendstr
.dbline 189
; LCD12864_sendstr("Hz");
ldi R16,<L35
ldi R17,>L35
xcall _LCD12864_sendstr
.dbline -2
L27:
adiw R28,4
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l freq 0 l
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 202
; /* LCD12864_sendbyte(1, temp[0]);
; LCD12864_sendbyte(1, temp[1]);
; LCD12864_sendbyte(1, temp[2]);
; LCD12864_sendbyte(1, temp[3]);
; LCD12864_sendbyte(1, temp[4]);
; LCD12864_sendbyte(1, temp[5]);
; LCD12864_sendbyte(1, temp[6]);
; LCD12864_sendbyte(1, temp[7]);*/
;
; }
;
; void init_devices(void)
; {
.dbline 203
; CLI(); //禁止所有中断
cli
.dbline 204
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 205
; GICR = 0x00;
out 0x3b,R2
.dbline 206
; port_init();
xcall _port_init
.dbline 207
; LCD12864_initial();
xcall _LCD12864_initial
.dbline 208
; timer0_init();
xcall _timer0_init
.dbline 209
; timer1_init();
xcall _timer1_init
.dbline 210
; timer2_init();
xcall _timer2_init
.dbline 211
; SEI();//开全局中断
sei
.dbline -2
L36:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 215
; }
; //主函数
; void main(void)
; {
.dbline 216
; init_devices();
xcall _init_devices
.dbline 218
; //在这继续添加你的代码
; LCD12864_gotoXY(1,0);
clr R18
ldi R16,1
xcall _LCD12864_gotoXY
.dbline 219
; LCD12864_sendstr("作者: 张秋伟");
ldi R16,<L38
ldi R17,>L38
xcall _LCD12864_sendstr
.dbline 220
; LCD12864_gotoXY(2,0);
clr R18
ldi R16,2
xcall _LCD12864_gotoXY
.dbline 221
; LCD12864_sendstr("班级: 06电气");
ldi R16,<L39
ldi R17,>L39
xcall _LCD12864_sendstr
.dbline 222
; LCD12864_gotoXY(3,0);
clr R18
ldi R16,3
xcall _LCD12864_gotoXY
.dbline 223
; LCD12864_sendstr("学号: 06");
ldi R16,<L40
ldi R17,>L40
xcall _LCD12864_sendstr
.dbline 224
; delay_nms(5000);
ldi R16,5000
ldi R17,19
xcall _delay_nms
.dbline 225
; LCD12864_clear(); //清屏
xcall _LCD12864_clear
.dbline 226
; LCD12864_gotoXY(1,2);
ldi R18,2
ldi R16,1
xcall _LCD12864_gotoXY
.dbline 227
; LCD12864_sendstr("数字频率计");
ldi R16,<L41
ldi R17,>L41
xcall _LCD12864_sendstr
.dbline 228
; LCD12864_gotoXY(2,0);
clr R18
ldi R16,2
xcall _LCD12864_gotoXY
.dbline 229
; LCD12864_sendstr("时间");
ldi R16,<L42
ldi R17,>L42
xcall _LCD12864_sendstr
.dbline 230
; LCD12864_gotoXY(3,0);
clr R18
ldi R16,3
xcall _LCD12864_gotoXY
.dbline 231
; LCD12864_sendstr("频率");
ldi R16,<L43
ldi R17,>L43
xcall _LCD12864_sendstr
.dbline 233
;
; DDRB |=(1<<PB7)|(1<<PB0);//设置74ls393的清零端,闸门控制端为输出
in R24,0x17
ori R24,129
out 0x17,R24
.dbline 234
; PORTB|= (1<<PB7); //74LS393清零
sbi 0x18,7
.dbline 235
; delay_nus(5);
ldi R16,5
ldi R17,0
xcall _delay_nus
.dbline 236
; PORTB &=~(1<<PB7); //74LS393开始计数
cbi 0x18,7
.dbline 237
; PORTB|=(1<<PB0); //打开闸门
sbi 0x18,0
xjmp L45
L44:
.dbline 239
; while(1)
; {
.dbline 240
; if(second_is_ok == 1)
lds R24,_second_is_ok
cpi R24,1
brne L47
.dbline 241
; {
.dbline 242
; second_is_ok =0;
clr R2
sts _second_is_ok,R2
.dbline 243
; time();
xcall _time
.dbline 244
; }
L47:
.dbline 245
; if(display_is_ok)
lds R2,_display_is_ok
tst R2
breq L49
.dbline 246
; {
.dbline 247
; display_is_ok=0;
clr R2
sts _display_is_ok,R2
.dbline 248
; PutChar();
xcall _PutChar
.dbline 249
; display_time();
xcall _display_time
.dbline 250
; }
L49:
.dbline 251
L45:
.dbline 238
xjmp L44
X0:
.dbline -2
L37:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
_temp::
.blkb 8
.dbsym e temp _temp A[8:8]c
_Hour_L::
.blkb 1
.dbsym e Hour_L _Hour_L c
_Hour_H::
.blkb 1
.dbsym e Hour_H _Hour_H c
_Minute_L::
.blkb 1
.dbsym e Minute_L _Minute_L c
_Minute_H::
.blkb 1
.dbsym e Minute_H _Minute_H c
_Second_L::
.blkb 1
.dbsym e Second_L _Second_L c
_Second_H::
.blkb 1
.dbsym e Second_H _Second_H c
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L43:
.blkb 5
.area idata
.byte 198,181,194,202,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L42:
.blkb 5
.area idata
.byte 202,177,188,228,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L41:
.blkb 11
.area idata
.byte 202,253,215,214,198,181,194,202,188,198,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L40:
.blkb 9
.area idata
.byte 209,167,186,197,58,32,48,54,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L39:
.blkb 13
.area idata
.byte 176,224,188,182,58,32,48,54,181,231,198,248,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L38:
.blkb 13
.area idata
.byte 215,247,213,223,58,32,213,197,199,239,206,176,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
L35:
.blkb 3
.area idata
.byte 'H,'z,0
.area data(ram, con, rel)
.dbfile E:\张秋伟\我的实验\数字频率计\pro.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -