📄 cycle_1.lis
字号:
.module cycle_1.c
.area vector(rom, abs)
.org 6
0006 9FC0 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_1.c
0010 .dbsym s tabel _tabel Ac[16:16]
.area data(ram, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle_1.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_1.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_1.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_1.c
0006 .dbsym s ledbuff _ledbuff Ac[6:6]
.area text(rom, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\CYCLE\cycle_1.c
0000 .dbfunc s delay_1ms _delay_1ms fI
; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline 20{
; /**********************************************
; http://www.sl.com.cn
; 双龙电子公司----占空比测量演示程序(ICCAVR)
; 作者:詹卫前
; 1、学习定时器T1捕捉(捕获)中断的使用
; **********************************************/
; #include <io8515.h>
; #include <math.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 count_l;
; unsigned int count_h;
; /******************************
; 1ms延时程序
; ******************************/
; void delay_1ms(void)
; {
0000 .dbline 22
; 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 23
0006 L3:
0006 .dbline 22
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 22
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline 24}
; ;
; }
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 29{
; /******************************
; 六路动态扫描显示电路
; ******************************/
; void display(void)
; {
0016 .dbline 31
; unsigned char i;
; for (i=0;i<6;i++)
0016 4427 clr R20
0018 16C0 rjmp L10
001A L7:
001A .dbline 32
001A .dbline 33
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 34
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 35
0036 E4DF rcall _delay_1ms
0038 .dbline 36
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 37
0044 L8:
0044 .dbline 31
0044 4395 inc R20
0046 L10:
0046 .dbline 31
0046 4630 cpi R20,6
0048 40F3 brlo L7
004A .dbline 38}
; {
; 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 43{
; /************************************
; 将count十六进制数据转换为LED七段码
; ************************************/
; void hextobcd(unsigned int count)
; {
0054 .dbline 45
; unsigned char i,temp;
; for (i=0;i<6;i++)
0054 6627 clr R22
0056 1FC0 rjmp L15
0058 L12:
0058 .dbline 46
0058 .dbline 46
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 47
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
0080 E80F add R30,R24
0082 F91F adc R31,R25
0084 0082 std z+0,R0
0086 .dbline 48
0086 2AE0 ldi R18,10
0088 30E0 ldi R19,0
008A 0A2D mov R16,R10
008C 1B2D mov R17,R11
008E 00D0 rcall div16u
0090 A02E mov R10,R16
0092 B12E mov R11,R17
0094 .dbline 49
0094 L13:
0094 .dbline 45
0094 6395 inc R22
0096 L15:
0096 .dbline 45
0096 6630 cpi R22,6
0098 F8F2 brlo L12
009A .dbline 50}
; {temp=count%10;
; ledbuff[i]=tabel[temp];
; count=count/10;
; }
; }
009A L11:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -