⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 segdisp-16sm.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -