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

📄 numled.lis

📁 详细介绍M8两版间通讯
💻 LIS
字号:
                        .module NumLED.c
                        .area lit(rom, con, rel)
 0000           _seg_table::
 0000 C0F9              .byte 192,249
 0002 A4B0              .byte 164,176
 0004 9992              .byte 153,146
 0006 82F8              .byte 130,248
 0008 8090              .byte 128,144
 000A 8883              .byte 136,131
 000C C6A1              .byte 198,161
 000E 868E              .byte 134,142
 0010                   .dbfile E:\Mega8程序\UART通信\NumLED.c
 0010                   .dbsym e seg_table _seg_table A[16:16]kc
                        .area data(ram, con, rel)
 0000                   .dbfile E:\Mega8程序\UART通信\NumLED.c
 0000           _led_buff::
 0000                   .blkb 2
                        .area idata
 0000 DB83              .byte 219,131
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Mega8程序\UART通信\NumLED.c
 0002                   .blkb 2
                        .area idata
 0002 8FD6              .byte 143,214
                        .area data(ram, con, rel)
 0004                   .dbfile E:\Mega8程序\UART通信\NumLED.c
 0004                   .dbsym e led_buff _led_buff A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\Mega8程序\UART通信\NumLED.c
 0000                   .dbfunc e ADCtoBCD _ADCtoBCD fV
 0000           ;              i -> R10
 0000           ;           temp -> R12,R13
                        .even
 0000           _ADCtoBCD::
 0000 00D0              rcall push_gset4
 0002 6801              movw R12,R16
 0004                   .dbline -1
 0004                   .dbline 12
 0004           ; /*  目标MCU:MEGA8   晶振:内部RC(INT) 8MHZ,该模块中使用了seg_table[16]数组
 0004           ; 来表示LED的16个字符0~F,led_buff[4]表示4个LED的字符代码*/
 0004           ; #include<iom8v.h> 
 0004           ; #include <macros.h>
 0004           ; #define Vref 4995
 0004           ; const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
 0004           ; 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
 0004           ; /*LED Code:0,1,2,3,4,5
 0004           ; 6,7,8,9,A,B,C,D,E,F*/
 0004           ; unsigned char led_buff[4]={0b011011011,0b10000011,0b10001111,0b11010110};//首位为点,其他没有显示
 0004           ; void ADCtoBCD(unsigned int temp)//16进制数值转换为BCD码,12精度
 0004           ;        {unsigned char i;
 0004                   .dbline 13
 0004           ;        temp=(unsigned int)(((unsigned long)((unsigned long)temp*Vref))/0xfff);
 0004 1601              movw R2,R12
 0006 4424              clr R4
 0008 5524              clr R5
 000A 43E8              ldi R20,131
 000C 53E1              ldi R21,19
 000E 60E0              ldi R22,0
 0010 70E0              ldi R23,0
 0012 5A92              st -y,R5
 0014 4A92              st -y,R4
 0016 3A92              st -y,R3
 0018 2A92              st -y,R2
 001A 8A01              movw R16,R20
 001C 9B01              movw R18,R22
 001E 00D0              rcall empy32u
 0020 4FEF              ldi R20,255
 0022 5FE0              ldi R21,15
 0024 60E0              ldi R22,0
 0026 70E0              ldi R23,0
 0028 7A93              st -y,R23
 002A 6A93              st -y,R22
 002C 5A93              st -y,R21
 002E 4A93              st -y,R20
 0030 00D0              rcall div32u
 0032 6801              movw R12,R16
 0034                   .dbline 14
 0034           ;        for(i=0;i<4;i++)
 0034 AA24              clr R10
 0036 17C0              rjmp L5
 0038           L2:
 0038                   .dbline 15
 0038                   .dbline 15
 0038 2AE0              ldi R18,10
 003A 30E0              ldi R19,0
 003C 8601              movw R16,R12
 003E 00D0              rcall mod16u
 0040 F801              movw R30,R16
 0042 80E0              ldi R24,<_seg_table
 0044 90E0              ldi R25,>_seg_table
 0046 E80F              add R30,R24
 0048 F91F              adc R31,R25
 004A E491              lpm R30,Z
 004C 80E0              ldi R24,<_led_buff
 004E 90E0              ldi R25,>_led_buff
 0050 AA2D              mov R26,R10
 0052 BB27              clr R27
 0054 A80F              add R26,R24
 0056 B91F              adc R27,R25
 0058 EC93              st x,R30
 005A                   .dbline 16
 005A 2AE0              ldi R18,10
 005C 30E0              ldi R19,0
 005E 8601              movw R16,R12
 0060 00D0              rcall div16u
 0062 6801              movw R12,R16
 0064                   .dbline 16
 0064           L3:
 0064                   .dbline 14
 0064 A394              inc R10
 0066           L5:
 0066                   .dbline 14
 0066 8A2D              mov R24,R10
 0068 8430              cpi R24,4
 006A 30F3              brlo L2
 006C                   .dbline 17
 006C           ;        {led_buff[i]=seg_table[temp%10];
 006C           ;        temp=temp/10;}
 006C           ;        led_buff[3]&=0x7f;}
 006C 80910300          lds R24,_led_buff+3
 0070 8F77              andi R24,127
 0072 80930300          sts _led_buff+3,R24
 0076                   .dbline -2
 0076           L1:
 0076 00D0              rcall pop_gset4
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r i 10 c
 007A                   .dbsym r temp 12 i
 007A                   .dbend
 007A                   .dbfunc e led_init _led_init fV
                        .even
 007A           _led_init::
 007A                   .dbline -1
 007A                   .dbline 19
 007A           ; void led_init(void)
 007A           ;        {DDRB|=0xff;//方向:输出
 007A                   .dbline 19
 007A 87B3              in R24,0x17
 007C 8F6F              ori R24,255
 007E 87BB              out 0x17,R24
 0080                   .dbline 20
 0080           ;         PORTB|=0xff;//LED数据-
 0080 88B3              in R24,0x18
 0082 8F6F              ori R24,255
 0084 88BB              out 0x18,R24
 0086                   .dbline 21
 0086           ;         DDRD|=0xf0;//D口高位输出,单只选通4个LED功能
 0086 81B3              in R24,0x11
 0088 806F              ori R24,240
 008A 81BB              out 0x11,R24
 008C                   .dbline 22
 008C           ;         PORTD|=0xf0;}//高位输出高电平,LED全部熄灭.低位输入,全部为高阻态,如果为1,则带上拉电阻
 008C 82B3              in R24,0x12
 008E 806F              ori R24,240
 0090 82BB              out 0x12,R24
 0092                   .dbline -2
 0092           L7:
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbend
 0094                   .dbfunc e spark _spark fV
 0094           ;            num -> R20
                        .even
 0094           _spark::
 0094 00D0              rcall push_gset1
 0096 402F              mov R20,R16
 0098                   .dbline -1
 0098                   .dbline 24
 0098           ; void spark(unsigned char num)
 0098           ;        {DDRB|=0xff;//方向:输出
 0098                   .dbline 24
 0098 87B3              in R24,0x17
 009A 8F6F              ori R24,255
 009C 87BB              out 0x17,R24
 009E                   .dbline 25
 009E           ;         PORTB=led_buff[num];
 009E 80E0              ldi R24,<_led_buff
 00A0 90E0              ldi R25,>_led_buff
 00A2 E42F              mov R30,R20
 00A4 FF27              clr R31
 00A6 E80F              add R30,R24
 00A8 F91F              adc R31,R25
 00AA 2080              ldd R2,z+0
 00AC 28BA              out 0x18,R2
 00AE                   .dbline 26
 00AE           ;         PORTD=(1<<(num+4));}
 00AE 142F              mov R17,R20
 00B0 1C5F              subi R17,252    ; addi 4
 00B2 01E0              ldi R16,1
 00B4 00D0              rcall lsl8
 00B6 02BB              out 0x12,R16
 00B8                   .dbline -2
 00B8           L8:
 00B8 00D0              rcall pop_gset1
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbsym r num 20 c
 00BC                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -