📄 segdisp-16sm.lis
字号:
.module SegDisp-16sm.c
.area text(rom, con, rel)
0000 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
.area data(ram, con, rel)
0000 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0000 _pattern::
0000 .blkb 2
.area idata
0000 0103 .byte 1,3
.area data(ram, con, rel)
0002 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0002 .blkb 2
.area idata
0002 070F .byte 7,15
.area data(ram, con, rel)
0004 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0004 .blkb 2
.area idata
0004 1F3F .byte 31,63
.area data(ram, con, rel)
0006 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0006 .blkb 2
.area idata
0006 7FFF .byte 127,255
.area data(ram, con, rel)
0008 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0008 .blkb 2
.area idata
0008 7F3F .byte 127,63
.area data(ram, con, rel)
000A .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
000A .blkb 2
.area idata
000A 1F0F .byte 31,15
.area data(ram, con, rel)
000C .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
000C .blkb 2
.area idata
000C 0703 .byte 7,3
.area data(ram, con, rel)
000E .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
000E .blkb 1
.area idata
000E 01 .byte 1
.area data(ram, con, rel)
000F .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
000F .dbsym e pattern _pattern A[15:15]c
000F _rowused::
000F .blkb 2
.area idata
000F 0102 .byte 1,2
.area data(ram, con, rel)
0011 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0011 .blkb 2
.area idata
0011 1008 .byte 16,8
.area data(ram, con, rel)
0013 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0013 .blkb 2
.area idata
0013 0420 .byte 4,32
.area data(ram, con, rel)
0015 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0015 .blkb 2
.area idata
0015 4080 .byte 64,128
.area data(ram, con, rel)
0017 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0017 .dbsym e rowused _rowused A[8:8]c
.area lit(rom, con, rel)
0000 _dig0::
0000 40 .byte 64
0001 .dbsym e dig0 _dig0 kc
0001 _dig1::
0001 80 .byte 128
0002 .dbsym e dig1 _dig1 kc
0002 _dig2::
0002 10 .byte 16
0003 .dbsym e dig2 _dig2 kc
0003 _dig3::
0003 08 .byte 8
0004 .dbsym e dig3 _dig3 kc
0004 _dot::
0004 20 .byte 32
0005 .dbsym e dot _dot kc
.area data(ram, con, rel)
0017 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0017 _segconv::
0017 .blkb 2
.area idata
0017 3F06 .byte 63,6
.area data(ram, con, rel)
0019 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0019 .blkb 2
.area idata
0019 5B4F .byte 91,'O
.area data(ram, con, rel)
001B .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
001B .blkb 2
.area idata
001B 666D .byte 'f,'m
.area data(ram, con, rel)
001D .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
001D .blkb 2
.area idata
001D 7D07 .byte 125,7
.area data(ram, con, rel)
001F .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
001F .blkb 2
.area idata
001F 7F6F .byte 127,'o
.area data(ram, con, rel)
0021 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0021 .dbsym e segconv _segconv A[10:10]c
.area text(rom, con, rel)
0000 .dbfile C:\+samples-16small\SegDisp-16sm\SegDisp-16sm.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 39
0000 ; /*
0000 ; Title: SegDisp-16sm.c
0000 ; Connection:
0000 ; Factory fixed setting:
0000 ; PORTA:
0000 ; PA0-PA2 LCD control
0000 ; PA3-PA7 4x7-segment display control
0000 ; Drive LED group2 (the right group of LED)
0000 ; PORTB:
0000 ; Shared by LCD and 4x7-segment displays
0000 ; output 8-bit data to LCD or 8-bit data to 4x7-segment displays
0000 ; PORTC:
0000 ; shared by 8-bit dipswitch and 4 x touch switches + 4 buttons
0000 ; receive inputs from dipswitch, touch switches and buttons
0000 ; PORTD:
0000 ; Drive LED group1 (the left group of LED)
0000 ; Attention:
0000 ; 1. J12 should be capped (connectted)
0000 ; 2. J5 is the Jump for LCD back light power
0000 ;
0000 ; Operation:
0000 ; 1. 4 x 7-segment displays show the inputs to PORTC in Binary
0000 ; */
0000 ;
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; unsigned char pattern[]={0x01, 0x03, 0x07, 0x0F, 0x1f, 0x3f, 0x7f, 0xff, 0x7f,
0000 ; 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01};
0000 ; unsigned char rowused[]={0x01, 0x02, 0x10, 0x08, 0x04, 0x20, 0x40, 0x80};
0000 ;
0000 ; const char dig0 = 0x40, dig1 = 0x80, dig2=0x10, dig3=0x08, dot=0x20;
0000 ; char segconv[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
0000 ; unsigned char BCD0, BCD1, BCD2, BCD3;
0000 ; int count;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 40
0000 ; DDRA = 0xFF; //set PortA output
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 41
0004 ; DDRB = 0xff; //set PORTB output
0004 87BB out 0x17,R24
0006 .dbline 42
0006 ; DDRC = 0x00; //set PORTC output
0006 2224 clr R2
0008 24BA out 0x14,R2
000A .dbline 43
000A ; PORTC = 0xff;
000A 85BB out 0x15,R24
000C .dbline 44
000C ; DDRD = 0xFF; //set PORTD output
000C 81BB out 0x11,R24
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e delay _delay fV
0010 ; i -> R20,R21
0010 ; j -> R22,R23
0010 ; count -> R16,R17
.even
0010 _delay::
0010 0E940000 xcall push_xgsetF000
0014 .dbline -1
0014 .dbline 48
0014 ; }
0014 ;
0014 ; void delay(int count)
0014 ; {
0014 .dbline 50
0014 ; int i, j;
0014 ; for(i=count; i>0; i--)
0014 A801 movw R20,R16
0016 0BC0 xjmp L6
0018 L3:
0018 .dbline 51
0018 ; for(j=10; j>0; j--)
0018 6AE0 ldi R22,10
001A 70E0 ldi R23,0
001C L7:
001C .dbline 52
001C ; ;
001C L8:
001C .dbline 51
001C 6150 subi R22,1
001E 7040 sbci R23,0
0020 .dbline 51
0020 2224 clr R2
0022 3324 clr R3
0024 2616 cp R2,R22
0026 3706 cpc R3,R23
0028 CCF3 brlt L7
002A X0:
002A L4:
002A .dbline 50
002A 4150 subi R20,1
002C 5040 sbci R21,0
002E L6:
002E .dbline 50
002E 2224 clr R2
0030 3324 clr R3
0032 2416 cp R2,R20
0034 3506 cpc R3,R21
0036 84F3 brlt L3
0038 X1:
0038 .dbline -2
0038 L2:
0038 .dbline 0 ; func end
0038 0C940000 xjmp pop_xgsetF000
003C .dbsym r i 20 I
003C .dbsym r j 22 I
003C .dbsym r count 16 I
003C .dbend
003C .dbfunc e BinToBCD _BinToBCD fV
003C ; data -> R20,R21
.even
003C _BinToBCD::
003C 4A93 st -y,R20
003E 5A93 st -y,R21
0040 A801 movw R20,R16
0042 .dbline -1
0042 .dbline 56
0042 ; }
0042 ; //*****************************************************************
0042 ; void BinToBCD(int data)
0042 ; {
0042 .dbline 57
0042 ; BCD0=0;
0042 2224 clr R2
0044 20920500 sts _BCD0,R2
0048 .dbline 58
0048 ; BCD1=0;
0048 20920400 sts _BCD1,R2
004C .dbline 59
004C ; BCD2=0;
004C 20920300 sts _BCD2,R2
0050 .dbline 60
0050 ; BCD3=0;
0050 20920200 sts _BCD3,R2
0054 .dbline 61
0054 ; if(data>=10000)
0054 4031 cpi R20,16
0056 E7E2 ldi R30,39
0058 5E07 cpc R21,R30
005A 14F0 brlt L12
005C X2:
005C .dbline 62
005C ; data=0;
005C 4427 clr R20
005E 5527 clr R21
0060 L12:
0060 .dbline 63
0060 ; if(data>=1000)
0060 483E cpi R20,232
0062 E3E0 ldi R30,3
0064 5E07 cpc R21,R30
0066 6CF0 brlt L14
0068 X3:
0068 .dbline 64
0068 ; {
0068 .dbline 65
0068 ; BCD3=data/1000;
0068 28EE ldi R18,1000
006A 33E0 ldi R19,3
006C 8A01 movw R16,R20
006E 0E940000 xcall div16s
0072 00930200 sts _BCD3,R16
0076 .dbline 66
0076 ; data=data%1000;
0076 28EE ldi R18,1000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -