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

📄 hc595.lis

📁 ATMEGA128的EEPROM驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module hc595.c
                        .area lit(rom, con, rel)
 0000           _Seg7_Data::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010 00                .byte 0
 0011                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\EEPROM_HC595\source\lib\hc595.c
 0011                   .dbsym e Seg7_Data _Seg7_Data A[17:17]kc
                        .area data(ram, con, rel)
 0000                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\EEPROM_HC595\source\lib\hc595.c
 0000           _point::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\EEPROM_HC595\source\lib\hc595.c
 0001                   .dbsym e point _point c
 0001           _point_pos::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\EEPROM_HC595\source\lib\hc595.c
 0002                   .dbsym e point_pos _point_pos c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\EEPROM_HC595\source\lib\hc595.c
 0000                   .dbfunc e HC_595_init _HC_595_init fV
                        .even
 0000           _HC_595_init::
 0000                   .dbline -1
 0000                   .dbline 25
 0000           ; /************************************************
 0000           ; 文件:hc595.c
 0000           ; 用途:
 0000           ; 注意:内部8M晶振
 0000           ; 创建:2008.4.1
 0000           ; 修改:2008.4.1
 0000           ; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
 0000           ; ************************************************/
 0000           ; #include "..\config.h"
 0000           ; const unsigned char Seg7_Data[]={0x3F,0x06,0x5B,0x4F,0x66,             //0,1,2,3,4
 0000           ;                                  0x6D,0x7D,0x07,0x7F,0x6F,             //5,6,7,8,9
 0000           ;                                                        0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};  //a,b,c,d,e,f
 0000           ; volatile unsigned char Seg7_Led_Buf[4],point=0,point_pos=0;//point是小数点标志1代表有小数点point_pos表示小数点位置
 0000           ; /*************************************************************************
 0000           ; ** 函数名称:HC595初始化
 0000           ; ** 功能描述:
 0000           ; ** 输 入:
 0000           ; ** 输出        :
 0000           ; ** 全局变量:
 0000           ; ** 调用模块:
 0000           ; ** 说明:
 0000           ; ** 注意:
 0000           ; **************************************************************************/
 0000           ; void HC_595_init(void)
 0000           ; {
 0000                   .dbline 26
 0000           ;  OE_DDR |= (1<<OE);
 0000 A79A              sbi 0x14,7
 0002                   .dbline 27
 0002           ;  OE_PORT &= (1<<OE);
 0002 85B3              in R24,0x15
 0004 8078              andi R24,128
 0006 85BB              out 0x15,R24
 0008                   .dbline 28
 0008           ;  PORTB = 0x0F;
 0008 8FE0              ldi R24,15
 000A 88BB              out 0x18,R24
 000C                   .dbline 29
 000C           ;  spi_init();
 000C 0E940000          xcall _spi_init
 0010                   .dbline 30
 0010           ;  Seg7_Led_Buf[0]=16;
 0010 80E1              ldi R24,16
 0012 80930000          sts _Seg7_Led_Buf,R24
 0016                   .dbline 31
 0016           ;  Seg7_Led_Buf[1]=16;
 0016 80930100          sts _Seg7_Led_Buf+1,R24
 001A                   .dbline 32
 001A           ;  Seg7_Led_Buf[2]=16;
 001A 80930200          sts _Seg7_Led_Buf+2,R24
 001E                   .dbline 33
 001E           ;  Seg7_Led_Buf[3]=16;
 001E 80930300          sts _Seg7_Led_Buf+3,R24
 0022                   .dbline -2
 0022           L1:
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbend
 0024                   .dbfunc e HC_595_OUT _HC_595_OUT fV
 0024           ;           data -> R20
                        .even
 0024           _HC_595_OUT::
 0024 0E940000          xcall push_gset1
 0028 402F              mov R20,R16
 002A                   .dbline -1
 002A                   .dbline 46
 002A           ; }
 002A           ; /*************************************************************************
 002A           ; ** 函数名称:HC595送数据
 002A           ; ** 功能描述:
 002A           ; ** 输 入:
 002A           ; ** 输出        :
 002A           ; ** 全局变量:
 002A           ; ** 调用模块: 
 002A           ; ** 说明:
 002A           ; ** 注意:
 002A           ; **************************************************************************/
 002A           ; void HC_595_OUT(unsigned char data)
 002A           ; {
 002A                   .dbline 47
 002A           ;        SS_L();
 002A C098              cbi 0x18,0
 002C                   .dbline 48
 002C           ;        SPI_MasterTransmit(data);
 002C 042F              mov R16,R20
 002E 0E940000          xcall _SPI_MasterTransmit
 0032                   .dbline 49
 0032           ;        SS_H();
 0032 C09A              sbi 0x18,0
 0034                   .dbline -2
 0034           L5:
 0034 0E940000          xcall pop_gset1
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbsym r data 20 c
 003A                   .dbend
 003A                   .dbfunc e Seg7_Led_Update _Seg7_Led_Update fV
                        .even
 003A           _Seg7_Led_Update::
 003A                   .dbline -1
 003A                   .dbline 62
 003A           ; }
 003A           ; /*************************************************************************
 003A           ; ** 函数名称:HC595刷新显示
 003A           ; ** 功能描述:
 003A           ; ** 输 入:
 003A           ; ** 输出        :
 003A           ; ** 全局变量:
 003A           ; ** 调用模块: 
 003A           ; ** 说明:
 003A           ; ** 注意:
 003A           ; **************************************************************************/
 003A           ; void Seg7_Led_Update(void)
 003A           ; {
 003A                   .dbline 63
 003A           ;  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[0]]); 
 003A 80E0              ldi R24,<_Seg7_Data
 003C 90E0              ldi R25,>_Seg7_Data
 003E E0910000          lds R30,_Seg7_Led_Buf
 0042 FF27              clr R31
 0044 E80F              add R30,R24
 0046 F91F              adc R31,R25
 0048 0491              lpm R16,Z
 004A ECDF              xcall _HC_595_OUT
 004C                   .dbline 64
 004C           ;  Seg7_Bit0_En(); 
 004C                   .dbline 64
 004C BC9A              sbi 0x17,4
 004E                   .dbline 64
 004E C49A              sbi 0x18,4
 0050                   .dbline 64
 0050                   .dbline 64
 0050                   .dbline 65
 0050           ;  delay_nus(60); 
 0050 0CE3              ldi R16,60
 0052 10E0              ldi R17,0
 0054 0E940000          xcall _delay_nus
 0058                   .dbline 66
 0058           ;  Seg7_Bit0_Dis();
 0058                   .dbline 66
 0058 BC9A              sbi 0x17,4
 005A                   .dbline 66
 005A C498              cbi 0x18,4
 005C                   .dbline 66
 005C                   .dbline 66
 005C                   .dbline 68
 005C           ;  
 005C           ;  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[1]]);
 005C 80E0              ldi R24,<_Seg7_Data
 005E 90E0              ldi R25,>_Seg7_Data
 0060 E0910100          lds R30,_Seg7_Led_Buf+1
 0064 FF27              clr R31
 0066 E80F              add R30,R24
 0068 F91F              adc R31,R25
 006A 0491              lpm R16,Z
 006C DBDF              xcall _HC_595_OUT
 006E                   .dbline 69
 006E           ;  if((point==1)&&(point_pos==1))
 006E 80910000          lds R24,_point
 0072 8130              cpi R24,1
 0074 71F4              brne L8
 0076 80910100          lds R24,_point_pos
 007A 8130              cpi R24,1
 007C 51F4              brne L8
 007E                   .dbline 70
 007E           ;  HC_595_OUT((Seg7_Data[Seg7_Led_Buf[1]])|(1<<dp));
 007E 80E0              ldi R24,<_Seg7_Data
 0080 90E0              ldi R25,>_Seg7_Data
 0082 E0910100          lds R30,_Seg7_Led_Buf+1
 0086 FF27              clr R31
 0088 E80F              add R30,R24
 008A F91F              adc R31,R25
 008C 0491              lpm R16,Z
 008E 0068              ori R16,128
 0090 C9DF              xcall _HC_595_OUT
 0092           L8:
 0092                   .dbline 71
 0092           ;  Seg7_Bit1_En();
 0092                   .dbline 71
 0092 BD9A              sbi 0x17,5
 0094                   .dbline 71
 0094 C59A              sbi 0x18,5
 0096                   .dbline 71
 0096                   .dbline 71
 0096                   .dbline 72
 0096           ;  delay_nus(60);
 0096 0CE3              ldi R16,60
 0098 10E0              ldi R17,0
 009A 0E940000          xcall _delay_nus
 009E                   .dbline 73
 009E           ;  Seg7_Bit1_Dis();
 009E                   .dbline 73
 009E BD9A              sbi 0x17,5
 00A0                   .dbline 73
 00A0 C598              cbi 0x18,5
 00A2                   .dbline 73
 00A2                   .dbline 73
 00A2                   .dbline 75
 00A2           ;  
 00A2           ;  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[2]]); 
 00A2 80E0              ldi R24,<_Seg7_Data
 00A4 90E0              ldi R25,>_Seg7_Data
 00A6 E0910200          lds R30,_Seg7_Led_Buf+2
 00AA FF27              clr R31
 00AC E80F              add R30,R24
 00AE F91F              adc R31,R25
 00B0 0491              lpm R16,Z
 00B2 B8DF              xcall _HC_595_OUT
 00B4                   .dbline 76
 00B4           ;  if((point==1)&&(point_pos==2))
 00B4 80910000          lds R24,_point
 00B8 8130              cpi R24,1
 00BA 71F4              brne L12
 00BC 80910100          lds R24,_point_pos
 00C0 8230              cpi R24,2
 00C2 51F4              brne L12
 00C4                   .dbline 77
 00C4           ;  HC_595_OUT((Seg7_Data[Seg7_Led_Buf[2]])|(1<<dp));
 00C4 80E0              ldi R24,<_Seg7_Data
 00C6 90E0              ldi R25,>_Seg7_Data
 00C8 E0910200          lds R30,_Seg7_Led_Buf+2
 00CC FF27              clr R31
 00CE E80F              add R30,R24
 00D0 F91F              adc R31,R25
 00D2 0491              lpm R16,Z
 00D4 0068              ori R16,128
 00D6 A6DF              xcall _HC_595_OUT
 00D8           L12:
 00D8                   .dbline 78
 00D8           ;  Seg7_Bit2_En();
 00D8                   .dbline 78
 00D8 BE9A              sbi 0x17,6
 00DA                   .dbline 78
 00DA C69A              sbi 0x18,6
 00DC                   .dbline 78
 00DC                   .dbline 78
 00DC                   .dbline 79
 00DC           ;  delay_nus(60);
 00DC 0CE3              ldi R16,60
 00DE 10E0              ldi R17,0
 00E0 0E940000          xcall _delay_nus
 00E4                   .dbline 80
 00E4           ;  Seg7_Bit2_Dis();
 00E4                   .dbline 80
 00E4 BE9A              sbi 0x17,6
 00E6                   .dbline 80
 00E6 C698              cbi 0x18,6
 00E8                   .dbline 80
 00E8                   .dbline 80
 00E8                   .dbline 82
 00E8           ;  
 00E8           ;  HC_595_OUT(Seg7_Data[Seg7_Led_Buf[3]]);
 00E8 80E0              ldi R24,<_Seg7_Data
 00EA 90E0              ldi R25,>_Seg7_Data
 00EC E0910300          lds R30,_Seg7_Led_Buf+3
 00F0 FF27              clr R31
 00F2 E80F              add R30,R24
 00F4 F91F              adc R31,R25
 00F6 0491              lpm R16,Z
 00F8 95DF              xcall _HC_595_OUT
 00FA                   .dbline 83
 00FA           ;  if((point==1)&&(point_pos==3))
 00FA 80910000          lds R24,_point
 00FE 8130              cpi R24,1
 0100 71F4              brne L16
 0102 80910100          lds R24,_point_pos
 0106 8330              cpi R24,3
 0108 51F4              brne L16
 010A                   .dbline 84
 010A           ;  HC_595_OUT((Seg7_Data[Seg7_Led_Buf[3]])|(1<<dp));
 010A 80E0              ldi R24,<_Seg7_Data
 010C 90E0              ldi R25,>_Seg7_Data
 010E E0910300          lds R30,_Seg7_Led_Buf+3
 0112 FF27              clr R31
 0114 E80F              add R30,R24
 0116 F91F              adc R31,R25
 0118 0491              lpm R16,Z
 011A 0068              ori R16,128
 011C 83DF              xcall _HC_595_OUT
 011E           L16:
 011E                   .dbline 85
 011E           ;  Seg7_Bit3_En();
 011E                   .dbline 85
 011E BF9A              sbi 0x17,7
 0120                   .dbline 85
 0120 C79A              sbi 0x18,7
 0122                   .dbline 85
 0122                   .dbline 85
 0122                   .dbline 86
 0122           ;  delay_nus(60);
 0122 0CE3              ldi R16,60
 0124 10E0              ldi R17,0
 0126 0E940000          xcall _delay_nus
 012A                   .dbline 87
 012A           ;  Seg7_Bit3_Dis();
 012A                   .dbline 87
 012A BF9A              sbi 0x17,7
 012C                   .dbline 87
 012C C798              cbi 0x18,7
 012E                   .dbline 87
 012E                   .dbline 87
 012E                   .dbline -2
 012E           L6:
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbend
 0130                   .dbfunc e Seg7_Led_display _Seg7_Led_display fV
 0130           ;           data -> R20,R21
                        .even
 0130           _Seg7_Led_display::
 0130 0E940000          xcall push_gset1
 0134 A801              movw R20,R16
 0136                   .dbline -1
 0136                   .dbline 100
 0136           ; }
 0136           ; /*************************************************************************
 0136           ; ** 函数名称:Hc595显示整形数据
 0136           ; ** 功能描述:
 0136           ; ** 输 入:0~9999
 0136           ; ** 输出        :
 0136           ; ** 全局变量:
 0136           ; ** 调用模块: 
 0136           ; ** 说明:
 0136           ; ** 注意:
 0136           ; **************************************************************************/
 0136           ; void Seg7_Led_display(unsigned int data)
 0136           ; {
 0136                   .dbline 101
 0136           ;  if(data>9999) //错误处理,超出显示范围则全亮
 0136 8FE0              ldi R24,9999
 0138 97E2              ldi R25,39

⌨️ 快捷键说明

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