📄 cycle.lis
字号:
.module cycle.c
.area vector(rom, abs)
.org 6
0006 84C0 rjmp _Icp_timer1
.area lit(rom, con, rel)
0000 _tabel::
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 D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0010 .dbsym s tabel _tabel Ac[16:16]
.area data(ram, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0000 _ledbuff::
0000 .blkb 2
.area idata
0000 3F3F .byte 63,63
.area data(ram, con, rel)
0002 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0002 .blkb 2
.area idata
0002 3F3F .byte 63,63
.area data(ram, con, rel)
0004 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0004 .blkb 2
.area idata
0004 3F3F .byte 63,63
.area data(ram, con, rel)
0006 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0006 .dbsym s ledbuff _ledbuff Ac[6:6]
.area text(rom, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle.c
0000 .dbfunc s delay_1ms _delay_1ms fI
; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline 19{
; /**********************************************
; http://www.sl.com.cn
; 双龙电子公司----周期测量演示程序(ICCAVR)
; 作者:詹卫前
; 1、学习定时器T1捕捉(捕获)中断的使用
; **********************************************/
; #include <io8515.h>
; #pragma interrupt_handler Icp_timer1:4 // 设置ICP中断
; /* 七段译码字形表 */
; const unsigned char tabel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
; /* 显示缓冲区 */
; unsigned char ledbuff[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
; unsigned int oldcount;
; unsigned int newcount;
; /******************************
; 1ms延时程序
; ******************************/
; void delay_1ms(void)
; {
0000 .dbline 21
; unsigned int i;
; for(i=1;i<1142;i++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 rjmp L5
0006 L2:
0006 .dbline 22
0006 L3:
0006 .dbline 21
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 21
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline 23}
; ;
; }
0012 L1:
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbfunc s display _display fI
; i -> R20
.even
0014 _display::
0014 00D0 rcall push_gset1
0016 .dbline 28{
; /******************************
; 六路动态扫描显示电路
; ******************************/
; void display(void)
; {
0016 .dbline 30
; unsigned char i;
; for (i=0;i<6;i++)
0016 4427 clr R20
0018 16C0 rjmp L10
001A L7:
001A .dbline 31
001A .dbline 32
001A 80E0 ldi R24,<_ledbuff
001C 90E0 ldi R25,>_ledbuff
001E E42F mov R30,R20
0020 FF27 clr R31
0022 E80F add R30,R24
0024 F91F adc R31,R25
0026 2080 ldd R2,z+0
0028 28BA out 0x18,R2
002A .dbline 33
002A 01E0 ldi R16,1
002C 142F mov R17,R20
002E 00D0 rcall lsl8
0030 202E mov R2,R16
0032 2094 com R2
0034 22BA out 0x12,R2
0036 .dbline 34
0036 E4DF rcall _delay_1ms
0038 .dbline 35
0038 01E0 ldi R16,1
003A 142F mov R17,R20
003C 00D0 rcall lsl8
003E 22B2 in R2,0x12
0040 202A or R2,R16
0042 22BA out 0x12,R2
0044 .dbline 36
0044 L8:
0044 .dbline 30
0044 4395 inc R20
0046 L10:
0046 .dbline 30
0046 4630 cpi R20,6
0048 40F3 brlo L7
004A .dbline 37}
; {
; PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
; PORTD=~(1<<i); //开始显示
; delay_1ms(); //每一位显示保持一定时间
; PORTD|=(1<<i); //关闭显示
; }
; }
004A L6:
004A 00D0 rcall pop_gset1
004C 0895 ret
004E .dbsym r i 20 c
004E .dbfunc s hextobcd _hextobcd fI
; temp -> R20
; i -> R22
; count -> R10,R11
.even
004E _hextobcd::
004E 00D0 rcall push_gset3
0050 A02E mov R10,R16
0052 B12E mov R11,R17
0054 .dbline 42{
; /************************************
; 将count十六进制数据转换为LED七段码
; ************************************/
; void hextobcd(unsigned int count)
; {
0054 .dbline 44
; unsigned char i,temp;
; for (i=0;i<6;i++)
0054 6627 clr R22
0056 1FC0 rjmp L15
0058 L12:
0058 .dbline 45
0058 .dbline 45
0058 2AE0 ldi R18,10
005A 30E0 ldi R19,0
005C 0A2D mov R16,R10
005E 1B2D mov R17,R11
0060 00D0 rcall mod16u
0062 402F mov R20,R16
0064 512F mov R21,R17
0066 .dbline 46
0066 80E0 ldi R24,<_tabel
0068 90E0 ldi R25,>_tabel
006A 242E mov R2,R20
006C 3324 clr R3
006E 280E add R2,R24
0070 391E adc R3,R25
0072 E22D mov R30,R2
0074 F32D mov R31,R3
0076 C895 lpm
0078 80E0 ldi R24,<_ledbuff
007A 90E0 ldi R25,>_ledbuff
007C E62F mov R30,R22
007E FF27 clr R31
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -