📄 pulse_time.lis
字号:
.module pulse_time.c
.area vector(rom, abs)
.org 20
0014 0C948700 jmp _Icp_timer1
.org 36
0024 0C94A000 jmp _Timer0
.area code(ram, con, rel)
.area lit(rom, con, rel)
0000 _table::
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 777C .byte 'w,124
000C 395E .byte 57,94
000E 7971 .byte 'y,'q
0010 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0010 .dbsym e table _table A[16:16]kc
.area data(ram, con, rel)
0000 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0000 _ledbuff::
0000 .blkb 2
.area idata
0000 3F3F .byte 63,63
.area data(ram, con, rel)
0002 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0002 .blkb 2
.area idata
0002 3F3F .byte 63,63
.area data(ram, con, rel)
0004 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0004 .blkb 2
.area idata
0004 3F3F .byte 63,63
.area data(ram, con, rel)
0006 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0006 .dbsym e ledbuff _ledbuff A[6:6]c
0006 _i::
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0007 .dbsym e i _i c
.area text(rom, con, rel)
0000 .dbfile F:\李鹏飞\sl-avrad-m16\测脉宽\pulse_time.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 30
0000 ; /******************************************/
0000 ; /* 广州天河双龙电子公司 */
0000 ; /* http://www.sl.com.cn */
0000 ; /* 测脉宽程序 */
0000 ; /* 用跳线将PD6依次与PA0~PA7相连 */
0000 ; /* 作者:lpf@sl.com.cn */
0000 ; /* 2003年8月28日 */
0000 ; /* 目标MCU:MEGA16 晶振:外部(EXT) 8MHZ */
0000 ; /******************************************/
0000 ;
0000 ;
0000 ; #include<iom16v.h>
0000 ; #pragma interrupt_handler Icp_timer1:6
0000 ; //ICP中断入口地址
0000 ; #pragma interrupt_handler Timer0:10
0000 ; //定时器T0中断入口地址
0000 ; #pragma data:code
0000 ; //设置数据区为程序存储器
0000 ; //七段码译码字形表
0000 ; const unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0000 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
0000 ; #pragma data:data
0000 ; //设置数据区回到数据存储器
0000 ; unsigned char ledbuff[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};//显示缓冲区
0000 ; unsigned int oldcount;
0000 ; unsigned int newcount;
0000 ; unsigned char i=0;
0000 ; //1MS延时程序
0000 ; void delay_1ms()
0000 ; {
0000 .dbline 32
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 xjmp L5
0006 L2:
0006 .dbline 32
0006 L3:
0006 .dbline 32
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 32
000A ; unsigned int i;
000A ; for(i=1;i<1142;i++);
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 .dbline 33
0012 ; }
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e display _display fV
0014 ; i -> R20
.even
0014 _display::
0014 0E940000 xcall push_gset1
0018 .dbline -1
0018 .dbline 36
0018 ; //六路动态扫描显示
0018 ; void display()
0018 ; {
0018 .dbline 38
0018 ; unsigned char i;
0018 ; for(i=0;i<6;i++)
0018 4427 clr R20
001A 18C0 xjmp L10
001C L7:
001C .dbline 39
001C .dbline 40
001C 80E0 ldi R24,<_ledbuff
001E 90E0 ldi R25,>_ledbuff
0020 E42F mov R30,R20
0022 FF27 clr R31
0024 E80F add R30,R24
0026 F91F adc R31,R25
0028 2080 ldd R2,z+0
002A 28BA out 0x18,R2
002C .dbline 41
002C 01E0 ldi R16,1
002E 142F mov R17,R20
0030 0E940000 xcall lsl8
0034 202E mov R2,R16
0036 2094 com R2
0038 22BA out 0x12,R2
003A .dbline 42
003A E2DF xcall _delay_1ms
003C .dbline 43
003C 01E0 ldi R16,1
003E 142F mov R17,R20
0040 0E940000 xcall lsl8
0044 22B2 in R2,0x12
0046 202A or R2,R16
0048 22BA out 0x12,R2
004A .dbline 44
004A L8:
004A .dbline 38
004A 4395 inc R20
004C L10:
004C .dbline 38
004C 4630 cpi R20,6
004E 30F3 brlo L7
0050 .dbline -2
0050 .dbline 45
0050 ; {
0050 ; PORTB=ledbuff[i];
0050 ; PORTD=~(1<<i);
0050 ; delay_1ms();
0050 ; PORTD|=(1<<i);
0050 ; }
0050 ; }
0050 L6:
0050 0E940000 xcall pop_gset1
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbsym r i 20 c
0056 .dbend
0056 .dbfunc e hextobcd _hextobcd fV
0056 ; temp -> R20
0056 ; i -> R22
0056 ; count -> R10,R11
.even
0056 _hextobcd::
0056 0E940000 xcall push_gset3
005A 5801 movw R10,R16
005C .dbline -1
005C .dbline 48
005C ; //将COUNT十六进制数据转换为LED七段码
005C ; void hextobcd(unsigned int count)
005C ; {
005C .dbline 50
005C ; unsigned char i,temp;
005C ; for(i=0;i<6;i++)
005C 6627 clr R22
005E 1BC0 xjmp L15
0060 L12:
0060 .dbline 51
0060 .dbline 52
0060 2AE0 ldi R18,10
0062 30E0 ldi R19,0
0064 8501 movw R16,R10
0066 0E940000 xcall mod16u
006A 402F mov R20,R16
006C .dbline 53
006C 80E0 ldi R24,<_table
006E 90E0 ldi R25,>_table
0070 E42F mov R30,R20
0072 FF27 clr R31
0074 E80F add R30,R24
0076 F91F adc R31,R25
0078 E491 lpm R30,Z
007A 80E0 ldi R24,<_ledbuff
007C 90E0 ldi R25,>_ledbuff
007E A62F mov R26,R22
0080 BB27 clr R27
0082 A80F add R26,R24
0084 B91F adc R27,R25
0086 EC93 st x,R30
0088 .dbline 54
0088 2AE0 ldi R18,10
008A 30E0 ldi R19,0
008C 8501 movw R16,R10
008E 0E940000 xcall div16u
0092 5801 movw R10,R16
0094 .dbline 55
0094 L13:
0094 .dbline 50
0094 6395 inc R22
0096 L15:
0096 .dbline 50
0096 6630 cpi R22,6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -