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

📄 disp.lis

📁 电压计(c语言编写的) 通过led灯显示 电路图说明: 1、R1、R2、D1、D2 组成发光二极管显示
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module disp.c
                        .area data(ram, con, rel)
 0000           _disp_table::
 0000                   .blkb 2
                        .area idata
 0000 3F06              .byte 63,6
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 5B4F              .byte 91,'O
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 666D              .byte 'f,'m
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 7D07              .byte 125,7
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 7F6F              .byte 127,'o
                        .area data(ram, con, rel)
 000A                   .blkb 2
                        .area idata
 000A 777C              .byte 'w,124
                        .area data(ram, con, rel)
 000C                   .blkb 2
                        .area idata
 000C 395E              .byte 57,94
                        .area data(ram, con, rel)
 000E                   .blkb 2
                        .area idata
 000E 7971              .byte 'y,'q
                        .area data(ram, con, rel)
 0010                   .dbfile E:\avrc\disp.c
 0010                   .dbsym e disp_table _disp_table A[16:16]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\avrc\disp.c
 0000                   .dbfunc e main _main fV
 0000           ;              i -> <dead>
 0000           ;              j -> R20,R21
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; #include <iom8v.h> //和单片机类型相对应的头文件,选择Atmega8做实验;
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; void send_byte(uchar x);
 0000           ; void disp_led(uchar buffer,uchar control);
 0000           ; void delay_1ms(void); 
 0000           ; void delay_nms(unsigned int n);
 0000           ; uchar  disp_table[16] = {
 0000           ;       0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
 0000           ;       0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 0000           ; uint count;
 0000           ; void main(void)
 0000           ; {   
 0000                   .dbline 18
 0000           ;     uint i;
 0000           ;       int j;
 0000           ;       OSCCAL=0X9d;//系统时钟校准,不同的芯片和不同的频率,
 0000 8DE9              ldi R24,157
 0002 81BF              out 0x31,R24
 0004                   .dbline 19
 0004           ;       DDRB=0x03; //定义B口的PB0、PB1为输出口
 0004 83E0              ldi R24,3
 0006 87BB              out 0x17,R24
 0008                   .dbline 20
 0008           ;       DDRC=0x30;
 0008 80E3              ldi R24,48
 000A 84BB              out 0x14,R24
 000C                   .dbline 21
 000C           ;       WDR();       //看门狗计数清零
 000C A895              wdr
 000E                   .dbline 22
 000E           ;     WDTCR=0x0F;  //使能watchdog,并且,采用2048K分频,典型溢出时间5V时2.1S
 000E 8FE0              ldi R24,15
 0010 81BD              out 0x21,R24
 0012                   .dbline 23
 0012           ;     ADCSRA=0X00;
 0012 2224              clr R2
 0014 26B8              out 0x6,R2
 0016                   .dbline 24
 0016           ;       ADCSRA = 0x00; 
 0016 26B8              out 0x6,R2
 0018                   .dbline 25
 0018           ;     ADMUX =(1<<REFS0)|(1<<REFS1)|(1<<MUX1)|(1<<MUX0);
 0018 83EC              ldi R24,195
 001A 87B9              out 0x7,R24
 001C                   .dbline 26
 001C           ;     ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
 001C 8EEC              ldi R24,206
 001E 86B9              out 0x6,R24
 0020                   .dbline 27
 0020           ;       SEI();
 0020 7894              sei
 0022                   .dbline 29
 0022           ;       //PORTB=0B00000001; //PB0口输出高电平,PB1口输出低电平,绿灯亮
 0022           ;       delay_nms(5000); //延时5秒
 0022 08E8              ldi R16,5000
 0024 13E1              ldi R17,19
 0026 C3D0              rcall _delay_nms
 0028                   .dbline 30
 0028           ;       PORTB=0B00000010; //PB1口输出高电平,PB0口输出低电平,关闭绿灯,红灯亮
 0028 82E0              ldi R24,2
 002A 88BB              out 0x18,R24
 002C                   .dbline 31
 002C           ;       delay_nms(5000); //延时5秒
 002C 08E8              ldi R16,5000
 002E 13E1              ldi R17,19
 0030 BED0              rcall _delay_nms
 0032                   .dbline 32
 0032           ;       disp_led(4,0);
 0032 2227              clr R18
 0034 04E0              ldi R16,4
 0036 40D0              rcall _disp_led
 0038 24C0              rjmp L3
 003A           L2:
 003A                   .dbline 34
 003A           ;       while(1) 
 003A           ;      {       
 003A                   .dbline 35
 003A           ;                PORTB=0B00000010;
 003A 82E0              ldi R24,2
 003C 88BB              out 0x18,R24
 003E                   .dbline 36
 003E           ;                        delay_nms(100);
 003E 04E6              ldi R16,100
 0040 10E0              ldi R17,0
 0042 B5D0              rcall _delay_nms
 0044                   .dbline 37
 0044           ;                        j=((25600/1023)*(ADCH*256+ADCL))/1000;
 0044 25B1              in R18,0x5
 0046 3327              clr R19
 0048 00E0              ldi R16,256
 004A 11E0              ldi R17,1
 004C 00D0              rcall empy16s
 004E 9801              movw R18,R16
 0050 24B0              in R2,0x4
 0052 3324              clr R3
 0054 220D              add R18,R2
 0056 331D              adc R19,R3
 0058 09E1              ldi R16,25
 005A 10E0              ldi R17,0
 005C 00D0              rcall empy16s
 005E 28EE              ldi R18,1000
 0060 33E0              ldi R19,3
 0062 00D0              rcall div16s
 0064 A801              movw R20,R16
 0066                   .dbline 38
 0066           ;                        count=j;
 0066 50930100          sts _count+1,R21
 006A 40930000          sts _count,R20
 006E                   .dbline 39
 006E           ;                        if(j>24)
 006E 88E1              ldi R24,24
 0070 90E0              ldi R25,0
 0072 8017              cp R24,R16
 0074 9107              cpc R25,R17
 0076 14F4              brge L5
 0078                   .dbline 40
 0078           ;                        PORTB=0B00000011; //翻转PB0和PB1口
 0078 83E0              ldi R24,3
 007A 88BB              out 0x18,R24
 007C           L5:
 007C                   .dbline 41
 007C 21E0              ldi R18,1
 007E 0027              clr R16
 0080 1BD0              rcall _disp_led
 0082                   .dbline 42
 0082           L3:
 0082                   .dbline 33
 0082 DBCF              rjmp L2
 0084           X0:
 0084                   .dbline -2
 0084                   .dbline 43
 0084           ;                        disp_led(0,1);
 0084           ;     }
 0084           ; }
 0084           L1:
 0084                   .dbline 0 ; func end
 0084 0895              ret
 0086                   .dbsym l i 1 i
 0086                   .dbsym r j 20 I
 0086                   .dbend
 0086                   .dbfunc e send_byte _send_byte fV
 0086           ;              i -> R20
 0086           ;              x -> R22
                        .even
 0086           _send_byte::
 0086 00D0              rcall push_gset2
 0088 602F              mov R22,R16
 008A                   .dbline -1
 008A                   .dbline 45
 008A           ; void send_byte(uchar x)
 008A           ; {
 008A                   .dbline 47
 008A           ;       uchar i;
 008A           ;       for(i=0;i<8;i++)
 008A 4427              clr R20
 008C 11C0              rjmp L11
 008E           L8:
 008E                   .dbline 48
 008E           ;       {
 008E                   .dbline 49
 008E           ;               PORTC=0<<5;
 008E 2224              clr R2
 0090 25BA              out 0x15,R2
 0092                   .dbline 50
 0092           ;               if((x&(1<<(7-i))))
 0092 17E0              ldi R17,7
 0094 141B              sub R17,R20
 0096 01E0              ldi R16,1
 0098 00D0              rcall lsl8
 009A 262E              mov R2,R22
 009C 2022              and R2,R16
 009E 19F0              breq L12
 00A0                   .dbline 51
 00A0           ;               PORTC=1<<4;
 00A0 80E1              ldi R24,16
 00A2 85BB              out 0x15,R24
 00A4 02C0              rjmp L13
 00A6           L12:
 00A6                   .dbline 53
 00A6           ;               else
 00A6           ;               PORTC=0<<4;
 00A6 2224              clr R2
 00A8 25BA              out 0x15,R2
 00AA           L13:
 00AA                   .dbline 54
 00AA 80E2              ldi R24,32
 00AC 85BB              out 0x15,R24
 00AE                   .dbline 55
 00AE           L9:
 00AE                   .dbline 47
 00AE 4395              inc R20
 00B0           L11:
 00B0                   .dbline 47
 00B0 4830              cpi R20,8
 00B2 68F3              brlo L8
 00B4                   .dbline -2
 00B4                   .dbline 56
 00B4           ;               PORTC=1<<5;
 00B4           ;       }
 00B4           ; }
 00B4           L7:
 00B4 00D0              rcall pop_gset2
 00B6                   .dbline 0 ; func end
 00B6 0895              ret
 00B8                   .dbsym r i 20 c
 00B8                   .dbsym r x 22 c
 00B8                   .dbend
 00B8                   .dbfunc e disp_led _disp_led fV
 00B8           ;           temp -> y+0
 00B8           ;      tempcount -> R20,R21
 00B8           ;              i -> R22
 00B8           ;        control -> R20
 00B8           ;         buffer -> R10
                        .even
 00B8           _disp_led::
 00B8 00D0              rcall push_gset3
 00BA 422F              mov R20,R18
 00BC A02E              mov R10,R16
 00BE 2697              sbiw R28,6
 00C0                   .dbline -1
 00C0                   .dbline 58
 00C0           ; void disp_led(uchar buffer,uchar control)
 00C0           ; {
 00C0                   .dbline 61
 00C0           ;       uchar i,temp[6];
 00C0           ;       uint tempcount;
 00C0           ;       switch(control)
 00C0 5527              clr R21
 00C2 4030              cpi R20,0
 00C4 4507              cpc R20,R21
 00C6 29F0              breq L18
 00C8           X1:
 00C8 4130              cpi R20,1
 00CA E0E0              ldi R30,0
 00CC 5E07              cpc R21,R30
 00CE 99F0              breq L23
 00D0 5EC0              rjmp L15
 00D2           X2:
 00D2                   .dbline 62
 00D2           ;       {
 00D2           L18:
 00D2                   .dbline 64
 00D2           ;               case 0:         //test

⌨️ 快捷键说明

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