📄 ac12-2.lis
字号:
.module ac12-2.c
.area lit(rom, con, rel)
0000 _SEG7::
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
000A .dbfile d:\MYDOCU~1\ac12-2\ac12-2.c
000A .dbsym e SEG7 _SEG7 A[10:10]kc
000A _ACT::
000A FEFD .byte 254,253
000C FBF7 .byte 251,247
000E .dbsym e ACT _ACT A[4:4]kc
.area text(rom, con, rel)
0000 .dbfile d:\MYDOCU~1\ac12-2\ac12-2.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 14
0000 ; #include <iom16v.h>
0000 ; #include<eeprom.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; uchar const SEG7[10]={0x3f,0x06,0x5b,
0000 ; 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0000 ; uchar const ACT[4]={0xfe,0xfd,0xfb,0xf7};
0000 ; uint key_cnt,cnt;
0000 ; uint Wide,Disval;
0000 ; #define SINT0 (PIND&0x04)
0000 ; #define SINT1 (PIND&0x08)
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 15
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 16
0004 ; DDRA = 0xFF;
0004 8ABB out 0x1a,R24
0006 .dbline 17
0006 ; PORTB = 0xFF;
0006 88BB out 0x18,R24
0008 .dbline 18
0008 ; DDRB = 0xFF;
0008 87BB out 0x17,R24
000A .dbline 19
000A ; PORTC = 0xFF;
000A 85BB out 0x15,R24
000C .dbline 20
000C ; DDRC = 0xFF;
000C 84BB out 0x14,R24
000E .dbline 21
000E ; PORTD = 0xFF;
000E 82BB out 0x12,R24
0010 .dbline 22
0010 ; DDRD = 0x20;
0010 80E2 ldi R24,32
0012 81BB out 0x11,R24
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 26
0016 ; }
0016 ; //***************************
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 27
0016 ; TCNT0 = 0x83;
0016 83E8 ldi R24,131
0018 82BF out 0x32,R24
001A .dbline 28
001A ; TCCR0 = 0x03;
001A 83E0 ldi R24,3
001C 83BF out 0x33,R24
001E .dbline 29
001E ; TIMSK = 0x01;
001E 81E0 ldi R24,1
0020 89BF out 0x39,R24
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e timer1_init _timer1_init fV
.even
0024 _timer1_init::
0024 .dbline -1
0024 .dbline 36
0024 ; }
0024 ; //TIMER1 initialize - prescale:8
0024 ; // WGM: 0) Normal, TOP=0xFFFF
0024 ; // desired value: 1000Hz
0024 ; // actual value: 1000.000Hz (0.0%)
0024 ; void timer1_init(void)
0024 ; {
0024 .dbline 37
0024 ; TCCR1A = 0x83;
0024 83E8 ldi R24,131
0026 8FBD out 0x2f,R24
0028 .dbline 38
0028 ; TCCR1B = 0x02;
0028 82E0 ldi R24,2
002A 8EBD out 0x2e,R24
002C .dbline -2
002C L3:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e init_devices _init_devices fV
.even
002E _init_devices::
002E .dbline -1
002E .dbline 42
002E ; }
002E ; /*********************************************/
002E ; void init_devices(void)
002E ; {
002E .dbline 43
002E ; port_init();
002E E8DF xcall _port_init
0030 .dbline 44
0030 ; timer0_init();
0030 F2DF xcall _timer0_init
0032 .dbline 45
0032 ; timer1_init();
0032 F8DF xcall _timer1_init
0034 .dbline 46
0034 ; SREG=0x80;
0034 80E8 ldi R24,128
0036 8FBF out 0x3f,R24
0038 .dbline -2
0038 L4:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
003A .dbfunc e main _main fV
003A ; x -> y+0
.even
003A _main::
003A 2497 sbiw R28,4
003C .dbline -1
003C .dbline 51
003C ; }
003C ;
003C ; /******************主函数******************/
003C ; void main(void)
003C ; { long x;
003C .dbline 52
003C ; init_devices();
003C F8DF xcall _init_devices
003E 3FC0 xjmp L7
0040 L6:
0040 .dbline 54
0040 .dbline 55
0040 20900200 lds R2,_Wide
0044 30900300 lds R3,_Wide+1
0048 4424 clr R4
004A 5524 clr R5
004C FE01 movw R30,R28
004E 2082 std z+0,R2
0050 3182 std z+1,R3
0052 4282 std z+2,R4
0054 5382 std z+3,R5
0056 .dbline 56
0056 FE01 movw R30,R28
0058 2080 ldd R2,z+0
005A 3180 ldd R3,z+1
005C 4280 ldd R4,z+2
005E 5380 ldd R5,z+3
0060 48E8 ldi R20,136
0062 53E1 ldi R21,19
0064 60E0 ldi R22,0
0066 70E0 ldi R23,0
0068 5A92 st -y,R5
006A 4A92 st -y,R4
006C 3A92 st -y,R3
006E 2A92 st -y,R2
0070 8A01 movw R16,R20
0072 9B01 movw R18,R22
0074 0E940000 xcall empy32s
0078 4FEF ldi R20,255
007A 53E0 ldi R21,3
007C 60E0 ldi R22,0
007E 70E0 ldi R23,0
0080 7A93 st -y,R23
0082 6A93 st -y,R22
0084 5A93 st -y,R21
0086 4A93 st -y,R20
0088 0E940000 xcall div32s
008C FE01 movw R30,R28
008E 0083 std z+0,R16
0090 1183 std z+1,R17
0092 2283 std z+2,R18
0094 3383 std z+3,R19
0096 .dbline 57
0096 FE01 movw R30,R28
0098 2080 ldd R2,z+0
009A 3180 ldd R3,z+1
009C 30920100 sts _Disval+1,R3
00A0 20920000 sts _Disval,R2
00A4 .dbline 58
00A4 20900200 lds R2,_Wide
00A8 30900300 lds R3,_Wide+1
00AC 232C mov R2,R3
00AE 3324 clr R3
00B0 2BBC out 0x2b,R2
00B2 .dbline 59
00B2 80910200 lds R24,_Wide
00B6 90910300 lds R25,_Wide+1
00BA 9070 andi R25,0
00BC 8ABD out 0x2a,R24
00BE .dbline 60
00BE L7:
00BE .dbline 53
00BE C0CF xjmp L6
00C0 X0:
00C0 .dbline -2
00C0 L5:
00C0 2496 adiw R28,4
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbsym l x 0 L
00C4 .dbend
.area vector(rom, abs)
.org 36
0024 0C946200 jmp _timer0_ovf_isr
.area text(rom, con, rel)
00C4 .dbfile d:\MYDOCU~1\ac12-2\ac12-2.c
00C4 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
00C4 _timer0_ovf_isr::
00C4 2A92 st -y,R2
00C6 3A92 st -y,R3
00C8 0A93 st -y,R16
00CA 1A93 st -y,R17
00CC 2A93 st -y,R18
00CE 3A93 st -y,R19
00D0 8A93 st -y,R24
00D2 9A93 st -y,R25
00D4 EA93 st -y,R30
00D6 FA93 st -y,R31
00D8 2FB6 in R2,0x3f
00DA 2A92 st -y,R2
00DC .dbline -1
00DC .dbline 65
00DC ; while(1)
00DC ; {
00DC ; x=(long)Wide;
00DC ; x=x*5000/1023;
00DC ; Disval=(uint)x;
00DC ; OCR1AH=(uchar)(Wide>>8);
00DC ; OCR1AL=(uchar)(Wide&0x00ff);
00DC ; }
00DC ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -