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

📄 led.lis

📁 一个不错的DS1820的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module led.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
                        .area data(ram, con, rel)
 0000                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0000           _led_data::
 0000                   .blkb 2
                        .area idata
 0000 3F00              .word 63
                        .area data(ram, con, rel)
 0002                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0002                   .blkb 2
                        .area idata
 0002 0600              .word 6
                        .area data(ram, con, rel)
 0004                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0004                   .blkb 2
                        .area idata
 0004 5B00              .word 91
                        .area data(ram, con, rel)
 0006                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0006                   .blkb 2
                        .area idata
 0006 4F00              .word 79
                        .area data(ram, con, rel)
 0008                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0008                   .blkb 2
                        .area idata
 0008 6600              .word 102
                        .area data(ram, con, rel)
 000A                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 000A                   .blkb 2
                        .area idata
 000A 6D00              .word 109
                        .area data(ram, con, rel)
 000C                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 000C                   .blkb 2
                        .area idata
 000C 7D00              .word 125
                        .area data(ram, con, rel)
 000E                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 000E                   .blkb 2
                        .area idata
 000E 0700              .word 7
                        .area data(ram, con, rel)
 0010                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0010                   .blkb 2
                        .area idata
 0010 7F00              .word 127
                        .area data(ram, con, rel)
 0012                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0012                   .blkb 2
                        .area idata
 0012 6F00              .word 111
                        .area data(ram, con, rel)
 0014                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0014                   .blkb 2
                        .area idata
 0014 7700              .word 119
                        .area data(ram, con, rel)
 0016                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0016                   .blkb 2
                        .area idata
 0016 7300              .word 115
                        .area data(ram, con, rel)
 0018                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0018                   .blkb 2
                        .area idata
 0018 3900              .word 57
                        .area data(ram, con, rel)
 001A                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 001A                   .blkb 2
                        .area idata
 001A 6300              .word 99
                        .area data(ram, con, rel)
 001C                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 001C                   .blkb 2
                        .area idata
 001C 7900              .word 121
                        .area data(ram, con, rel)
 001E                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 001E                   .blkb 2
                        .area idata
 001E 0000              .byte 0,0
                        .area data(ram, con, rel)
 0020                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0020                   .dbsym e led_data _led_data A[32:16]kI
                        .area text(rom, con, rel)
 0000                   .dbfile F:\单片机资料\AVR单片机\制作ds18b20\18B20\led.c
 0000                   .dbfunc e led_init _led_init fV
                        .even
 0000           _led_init::
 0000                   .dbline -1
 0000                   .dbline 20
 0000           ; /**********************************
 0000           ; ** file_name led.c             **
 0000           ; ** describe  七段数码管函数        **
 0000           ; ** auther    古欣 www.avrvi.com  **
 0000           ; ** Time      200-2-25           **
 0000           ; ** temp=(data*1000)%1; 这个式子中的%为取余数,temp为data的第三位小数,0.023(data) --> 3(temp) 
 0000           ; ***********************************/
 0000           ; #include "config.h"
 0000           ; 
 0000           ; 
 0000           ; //LED数据 不显点,亮的段为1,连接为P0~P7对应a~g,dp
 0000           ; const led_data[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x73,0x39,0x63,0x79};
 0000           ; 
 0000           ; /***********************
 0000           ; ** 初始化对应端口为输出 
 0000           ; ** ABCD 和 abcdefg dpi 共12个IO口
 0000           ; ** 默认为 PB(0123) 和 PA
 0000           ; ***********************/
 0000           ; void led_init(void)
 0000           ; {
 0000                   .dbline 21
 0000           ;  led_ddr = 0xFF; //abcdefg dpi 各位设为输出
 0000 8FEF              ldi R24,255
 0002 8ABB              out 0x1a,R24
 0004                   .dbline 22
 0004           ;  led_contrl_ddr |= (1<<led_a)|(1<<led_b)|(1<<led_c)|(1<<led_d); //ABCD四个控制设为输出
 0004 87B3              in R24,0x17
 0006 8F60              ori R24,15
 0008 87BB              out 0x17,R24
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbend
 000C                   .dbfunc e display_one _display_one fV
 000C           ;           data -> R12
 000C           ;          count -> R10
                        .even
 000C           _display_one::
 000C AA92              st -y,R10
 000E CA92              st -y,R12
 0010 C22E              mov R12,R18
 0012 A02E              mov R10,R16
 0014                   .dbline -1
 0014                   .dbline 34
 0014           ;  
 0014           ;  // 以下两句将会使LED全亮,如果立即更改状态,将看不出来效果
 0014           ;  // led_port = 0xFF;
 0014           ;  // led_contrl_port |= (1<<led_a)|(1<<led_b)|(1<<led_c)|(1<<led_d);
 0014           ; }
 0014           ; 
 0014           ; /***********************
 0014           ; ** 显示一位
 0014           ; ** 输入:count显示在第几位(3210),data 要显示的数(0~f)
 0014           ; ************************/
 0014           ; void display_one(uint8 count, uint8 data)
 0014           ; {
 0014                   .dbline 35
 0014           ;  led_port = led_data[data];    //显示的数
 0014 80E0              ldi R24,<_led_data
 0016 90E0              ldi R25,>_led_data
 0018 EC2D              mov R30,R12
 001A FF27              clr R31
 001C EE0F              lsl R30
 001E FF1F              rol R31
 0020 E80F              add R30,R24
 0022 F91F              adc R31,R25
 0024 2080              ldd R2,z+0
 0026 3180              ldd R3,z+1
 0028 2BBA              out 0x1b,R2
 002A                   .dbline 36
 002A           ;  led_contrl_port |= (1<<count); //选中对应要显示的位,从右至左,0123
 002A 01E0              ldi R16,1
 002C 1A2D              mov R17,R10
 002E 0E940000          xcall lsl8
 0032 28B2              in R2,0x18
 0034 202A              or R2,R16
 0036 28BA              out 0x18,R2
 0038                   .dbline -2
 0038           L2:
 0038                   .dbline 0 ; func end
 0038 C990              ld R12,y+
 003A A990              ld R10,y+
 003C 0895              ret
 003E                   .dbsym r data 12 c
 003E                   .dbsym r count 10 c
 003E                   .dbend
 003E                   .dbfunc e display _display fV
 003E           ;           temp -> R10
 003E           ;           mode -> R20
 003E           ;           data -> R12,R13
                        .even
 003E           _display::
 003E 0E940000          xcall push_xgset303C
 0042 422F              mov R20,R18
 0044 6801              movw R12,R16
 0046                   .dbline -1
 0046                   .dbline 46
 0046           ;  //如果对位进行了调整,就不在是0123,而是对应的值
 0046           ; }
 0046           ; 
 0046           ; /***********************
 0046           ; ** 显示四位整数
 0046           ; ** 输入:要显示的四位数data,显示模式mode,1为补零显示模式,默认不显示零
 0046           ; ** 说明:可以小于四位数,mode=1时 自动补零
 0046           ; ************************/
 0046           ; void display(uint16 data,uint8 mode)
 0046           ; {
 0046                   .dbline 49
 0046           ;  uint8 temp;
 0046           ;  //千位
 0046           ;  if(data>1000)
 0046 88EE              ldi R24,1000
 0048 93E0              ldi R25,3
 004A 8C15              cp R24,R12
 004C 9D05              cpc R25,R13
 004E 78F4              brsh L4
 0050           X0:
 0050                   .dbline 50
 0050           ;  {
 0050                   .dbline 51
 0050           ;   temp=data/1000;
 0050 28EE              ldi R18,1000
 0052 33E0              ldi R19,3
 0054 8601              movw R16,R12
 0056 0E940000          xcall div16u
 005A 5801              movw R10,R16
 005C                   .dbline 52
 005C           ;   display_one(3,temp);
 005C 2A2D              mov R18,R10
 005E 03E0              ldi R16,3
 0060 D5DF              xcall _display_one
 0062                   .dbline 53
 0062           ;   delay_ms(6);  //6ms 是个经验值,刚好无闪烁,并且亮度较高
 0062 06E0              ldi R16,6
 0064 10E0              ldi R17,0
 0066 0E940000          xcall _delay_ms
 006A                   .dbline 54
 006A           ;   led_contrl_port &=~ (1<<3);
 006A C398              cbi 0x18,3
 006C                   .dbline 55
 006C           ;  }
 006C 0AC0              xjmp L5
 006E           L4:
 006E                   .dbline 57
 006E           ;  else
 006E           ;  {
 006E                   .dbline 58
 006E           ;   if(mode==1)
 006E 4130              cpi R20,1
 0070 41F4              brne L6
 0072           X1:
 0072                   .dbline 59
 0072           ;   {
 0072                   .dbline 60
 0072           ;   display_one(3,0);
 0072 2227              clr R18
 0074 03E0              ldi R16,3
 0076 CADF              xcall _display_one
 0078                   .dbline 61
 0078           ;   delay_ms(6);
 0078 06E0              ldi R16,6
 007A 10E0              ldi R17,0
 007C 0E940000          xcall _delay_ms
 0080                   .dbline 62
 0080           ;   led_contrl_port &=~ (1<<3);
 0080 C398              cbi 0x18,3
 0082                   .dbline 63
 0082           ;   }
 0082           L6:
 0082                   .dbline 64
 0082           ;  }
 0082           L5:
 0082                   .dbline 66
 0082           ;  //百位
 0082           ;  if(data>100)
 0082 84E6              ldi R24,100
 0084 90E0              ldi R25,0
 0086 8C15              cp R24,R12
 0088 9D05              cpc R25,R13
 008A 98F4              brsh L8
 008C           X2:
 008C                   .dbline 67
 008C           ;  {
 008C                   .dbline 68
 008C           ;   temp=(data%1000)/100;
 008C 28EE              ldi R18,1000
 008E 33E0              ldi R19,3
 0090 8601              movw R16,R12
 0092 0E940000          xcall mod16u
 0096 24E6              ldi R18,100
 0098 30E0              ldi R19,0
 009A 0E940000          xcall div16u
 009E 5801              movw R10,R16

⌨️ 快捷键说明

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