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

📄 numled.lis

📁 详细介绍M8两版间通讯
💻 LIS
字号:
                        .module NumLED.c
                        .area code(ram, con, rel)
                        .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 G:\Mega8程序\TCXO评估板\NumLED.c
 0010                   .dbsym e seg_table _seg_table A[16:16]kc
                        .area data(ram, con, rel)
 0000                   .dbfile G:\Mega8程序\TCXO评估板\NumLED.c
 0000           _led_buff::
 0000                   .blkb 2
                        .area idata
 0000 7FFF              .byte 127,255
                        .area data(ram, con, rel)
 0002                   .dbfile G:\Mega8程序\TCXO评估板\NumLED.c
 0002                   .blkb 2
                        .area idata
 0002 FFFF              .byte 255,255
                        .area data(ram, con, rel)
 0004                   .dbfile G:\Mega8程序\TCXO评估板\NumLED.c
 0004                   .dbsym e led_buff _led_buff A[4:4]c
 0004           L2:
 0004                   .blkw 1
                        .area idata
 0004 0000              .word _seg_table
                        .area data(ram, con, rel)
 0006                   .dbfile G:\Mega8程序\TCXO评估板\NumLED.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\Mega8程序\TCXO评估板\NumLED.c
 0000                   .dbfunc e ADCtoBCD _ADCtoBCD fV
 0000                   .dbsym s pStr L2 pkc
 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 21
 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           ; 
 0004           ; #pragma data:code
 0004           ; const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,
 0004           ;                                                                                                                                        0x99,0x92,0x82,0xf8,
 0004           ;                                                                                                                                        0x80,0x90,0x88,0x83,
 0004           ;                                                                                                                                        0xc6,0xa1,0x86,0x8e};
 0004           ; /*LED Code:定义在Flash中                                       0,1,2,3,
 0004           ;                                                                                                                                        4,5,6,7,
 0004           ;                                                                                                                                        8,9,A,B,
 0004           ;                                                                                                                                        C,D,E,F
 0004           ; */
 0004           ; 
 0004           ; #pragma data:data
 0004           ; unsigned char led_buff[4]={0x7F,0xFF,0xFF,0xFF};//首位为"."点,其他位没有显示
 0004           ; void ADCtoBCD(unsigned int temp)//16进制数值转换为BCD码,12精度
 0004           ;  {
 0004                   .dbline 24
 0004           ;       unsigned char i;
 0004           ;       static const unsigned char *pStr=seg_table;
 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 25
 0034           ;       for(i=0;i<4;i++)
 0034 AA24              clr R10
 0036 19C0              rjmp L6
 0038           L3:
 0038                   .dbline 26
 0038                   .dbline 27
 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 20900400          lds R2,L2
 0046 30900500          lds R3,L2+1
 004A E20D              add R30,R2
 004C F31D              adc R31,R3
 004E E491              lpm R30,Z
 0050 80E0              ldi R24,<_led_buff
 0052 90E0              ldi R25,>_led_buff
 0054 AA2D              mov R26,R10
 0056 BB27              clr R27
 0058 A80F              add R26,R24
 005A B91F              adc R27,R25
 005C EC93              st x,R30
 005E                   .dbline 28
 005E 2AE0              ldi R18,10
 0060 30E0              ldi R19,0
 0062 8601              movw R16,R12
 0064 00D0              rcall div16u
 0066 6801              movw R12,R16
 0068                   .dbline 29
 0068           L4:
 0068                   .dbline 25
 0068 A394              inc R10
 006A           L6:
 006A                   .dbline 25
 006A 8A2D              mov R24,R10
 006C 8430              cpi R24,4
 006E 20F3              brlo L3
 0070                   .dbline 30
 0070           ;        {
 0070           ;               led_buff[i]=*(pStr+temp%10);
 0070           ;               temp=temp/10;
 0070           ;        }
 0070           ;       led_buff[3]&=0x7f;
 0070 80910300          lds R24,_led_buff+3
 0074 8F77              andi R24,127
 0076 80930300          sts _led_buff+3,R24
 007A                   .dbline -2
 007A           L1:
 007A 00D0              rcall pop_gset4
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r i 10 c
 007E                   .dbsym r temp 12 i
 007E                   .dbend
 007E                   .dbfunc e led_init _led_init fV
                        .even
 007E           _led_init::
 007E                   .dbline -1
 007E                   .dbline 33
 007E           ;  }
 007E           ; void led_init(void)
 007E           ;  {
 007E                   .dbline 34
 007E           ;       DDRB|=0xff;
 007E 87B3              in R24,0x17
 0080 8F6F              ori R24,255
 0082 87BB              out 0x17,R24
 0084                   .dbline 36
 0084           ;       //方向:输出
 0084           ;       PORTB|=0xff;
 0084 88B3              in R24,0x18
 0086 8F6F              ori R24,255
 0088 88BB              out 0x18,R24
 008A                   .dbline 38
 008A           ;       //LED数据-
 008A           ;       DDRD|=0xf0;
 008A 81B3              in R24,0x11
 008C 806F              ori R24,240
 008E 81BB              out 0x11,R24
 0090                   .dbline 40
 0090           ;       //D口高位输出,单只选通4个LED功能
 0090           ;       PORTD|=0xf0;
 0090 82B3              in R24,0x12
 0092 806F              ori R24,240
 0094 82BB              out 0x12,R24
 0096                   .dbline -2
 0096           L8:
 0096                   .dbline 0 ; func end
 0096 0895              ret
 0098                   .dbend
 0098                   .dbfunc e spark _spark fV
 0098           ;            num -> R20
                        .even
 0098           _spark::
 0098 00D0              rcall push_gset1
 009A 402F              mov R20,R16
 009C                   .dbline -1
 009C                   .dbline 44
 009C           ;       //高位输出高电平,LED全部熄灭.低位输入,全部为高阻态,如果为1,则带上拉电阻
 009C           ;  }
 009C           ; void spark(unsigned char num)
 009C           ;  {
 009C                   .dbline 45
 009C           ;       PORTB=led_buff[num];
 009C 80E0              ldi R24,<_led_buff
 009E 90E0              ldi R25,>_led_buff
 00A0 E42F              mov R30,R20
 00A2 FF27              clr R31
 00A4 E80F              add R30,R24
 00A6 F91F              adc R31,R25
 00A8 2080              ldd R2,z+0
 00AA 28BA              out 0x18,R2
 00AC                   .dbline 46
 00AC           ;       PORTD=0xf0&(~(1<<(num+4)));
 00AC 142F              mov R17,R20
 00AE 1C5F              subi R17,252    ; addi 4
 00B0 01E0              ldi R16,1
 00B2 00D0              rcall lsl8
 00B4 802F              mov R24,R16
 00B6 8095              com R24
 00B8 807F              andi R24,240
 00BA 82BB              out 0x12,R24
 00BC                   .dbline -2
 00BC           L9:
 00BC 00D0              rcall pop_gset1
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbsym r num 20 c
 00C0                   .dbend

⌨️ 快捷键说明

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