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

📄 lc.lis

📁 ICC-AVR环境,用ATmage16做的LC表
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module LC.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\资料文件\MCU\myLC/LCD.h
 0000                   .dbfunc e LCD_en_write _LCD_en_write fV
                        .even
 0000           _LCD_en_write::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdlib.h>
 0000           ; #include "LCD.h"
 0000           ; 
 0000           ; #define C1                       1      //C1=1uF
 0000           ; #define L1                       100    //L1=100uH
 0000           ; 
 0000           ; unsigned int last_TCNT1,Cx,Lx;
 0000           ; unsigned int Cn;                        //分布电容,单位pf
 0000           ; unsigned char buf[8]="";
 0000           ; 
 0000           ; /*------------------------------函数原型声明------------------------------*/
 0000           ; void delay_nus        (unsigned char n);
 0000           ; void delay_nms        (unsigned char n);
 0000           ; void timer1_init        (void);
 0000           ; void timer2_init        (void);
 0000           ; void calc_Cn            (void);
 0000           ; void calc_Cx            (void);
 0000           ; void calc_Lx            (void);
 0000           ; /*------------------------------------------------------------------------*/
 0000                   .dbline 22
 0000           ; 
 0000 A99A              sbi 0x15,1
 0002                   .dbline 23
 0002           ; void main(void)
 0002 05E0              ldi R16,5
 0004 C4D3              xcall _delay_nus
 0006                   .dbline 24
 0006           ; {
 0006 A998              cbi 0x15,1
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
 000A                   .dbfunc e LCD_write_char _LCD_write_char fV
 000A           ;      data_temp -> R22,R23
 000A           ;   command_temp -> R20,R21
 000A           ;           data -> R12,R13
 000A           ;        command -> R10,R11
                        .even
 000A           _LCD_write_char::
 000A 0E940000          xcall push_gset4
 000E 6901              movw R12,R18
 0010 5801              movw R10,R16
 0012                   .dbline -1
 0012                   .dbline 28
 0012           ;       unsigned char k=5;
 0012           ;       /*----取消-----
 0012           ;       OSCCAL=0xA9;
 0012           ;       -------------*/
 0012                   .dbline 30
 0012           ;               
 0012           ;       DDRA|=LCD_DATA;   // 数据为输出
 0012 A501              movw R20,R10
 0014                   .dbline 31
 0014           ;       DDRC|=LCD_RS|LCD_EN;  //置位RS和EN
 0014 B601              movw R22,R12
 0016                   .dbline 32
 0016           ;       DDRD=0x00;
 0016 04E1              ldi R16,20
 0018 BAD3              xcall _delay_nus
 001A                   .dbline 33
 001A           ;       PORTD=0xFF;
 001A 4030              cpi R20,0
 001C 4507              cpc R20,R21
 001E 11F5              brne L3
 0020           X0:
 0020                   .dbline 34
 0020           ;       LCD_init();
 0020                   .dbline 35
 0020           ;       
 0020 A89A              sbi 0x15,0
 0022                   .dbline 36
 0022           ;       while (--k)
 0022 8BB3              in R24,0x1b
 0024 8F70              andi R24,15
 0026 8BBB              out 0x1b,R24
 0028                   .dbline 37
 0028           ;                delay_nms(100);
 0028 CB01              movw R24,R22
 002A 807F              andi R24,240
 002C 9070              andi R25,0
 002E 2BB2              in R2,0x1b
 0030 3324              clr R3
 0032 282A              or R2,R24
 0034 392A              or R3,R25
 0036 2BBA              out 0x1b,R2
 0038                   .dbline 38
 0038           ;       
 0038 E3DF              xcall _LCD_en_write
 003A                   .dbline 39
 003A           ;       CLI(); //disable all interrupts
 003A 660F              lsl R22
 003C 771F              rol R23
 003E 660F              lsl R22
 0040 771F              rol R23
 0042 660F              lsl R22
 0044 771F              rol R23
 0046 660F              lsl R22
 0048 771F              rol R23
 004A                   .dbline 40
 004A           ;       timer1_init();
 004A 8BB3              in R24,0x1b
 004C 8F70              andi R24,15
 004E 8BBB              out 0x1b,R24
 0050                   .dbline 41
 0050           ;       timer2_init();
 0050 CB01              movw R24,R22
 0052 807F              andi R24,240
 0054 9070              andi R25,0
 0056 2BB2              in R2,0x1b
 0058 3324              clr R3
 005A 282A              or R2,R24
 005C 392A              or R3,R25
 005E 2BBA              out 0x1b,R2
 0060                   .dbline 42
 0060           ;       MCUCR = 0x00;
 0060 CFDF              xcall _LCD_en_write
 0062                   .dbline 43
 0062           ;       GICR  = 0x00;
 0062 21C0              xjmp L4
 0064           L3:
 0064                   .dbline 45
 0064                   .dbline 46
 0064 A898              cbi 0x15,0
 0066                   .dbline 47
 0066 8BB3              in R24,0x1b
 0068 8F70              andi R24,15
 006A 8BBB              out 0x1b,R24
 006C                   .dbline 48
 006C CA01              movw R24,R20
 006E 807F              andi R24,240
 0070 9070              andi R25,0
 0072 2BB2              in R2,0x1b
 0074 3324              clr R3
 0076 282A              or R2,R24
 0078 392A              or R3,R25
 007A 2BBA              out 0x1b,R2
 007C                   .dbline 49
 007C C1DF              xcall _LCD_en_write
 007E                   .dbline 50
 007E 440F              lsl R20
 0080 551F              rol R21
 0082 440F              lsl R20
 0084 551F              rol R21
 0086 440F              lsl R20
 0088 551F              rol R21
 008A 440F              lsl R20
 008C 551F              rol R21
 008E                   .dbline 51
 008E 8BB3              in R24,0x1b
 0090 8F70              andi R24,15
 0092 8BBB              out 0x1b,R24
 0094                   .dbline 52
 0094 CA01              movw R24,R20
 0096 807F              andi R24,240
 0098 9070              andi R25,0
 009A 2BB2              in R2,0x1b
 009C 3324              clr R3
 009E 282A              or R2,R24
 00A0 392A              or R3,R25
 00A2 2BBA              out 0x1b,R2
 00A4                   .dbline 53
 00A4 ADDF              xcall _LCD_en_write
 00A6                   .dbline 54
 00A6           L4:
 00A6                   .dbline -2
 00A6           L2:
 00A6 0E940000          xcall pop_gset4
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbsym r data_temp 22 i
 00AC                   .dbsym r command_temp 20 i
 00AC                   .dbsym r data 12 i
 00AC                   .dbsym r command 10 i
 00AC                   .dbend
 00AC                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 00AC           ;        address -> R20
 00AC           ;              y -> R20
 00AC           ;              x -> R22
                        .even
 00AC           _LCD_set_xy::
 00AC 0E940000          xcall push_gset2
 00B0 422F              mov R20,R18
 00B2 602F              mov R22,R16
 00B4                   .dbline -1
 00B4                   .dbline 58
 00B4           ;       TIMSK = 0x40; //timer interrupt sources
 00B4           ;       SEI();
 00B4           ;       
 00B4           ;       LCD_write_char(0x01,0);
 00B4           ;       delay_nms(2);
 00B4           ;       while(1);
 00B4           ; }
 00B4           ; 
 00B4           ; #pragma interrupt_handler timer2_ovf_isr:5
 00B4           ; void timer2_ovf_isr(void)
 00B4           ; {
 00B4           ;     TCCR2 = 0x00; //stop Timer1
 00B4           ;       TCCR1B= 0x00; //stop Timer2
 00B4           ;       last_TCNT1=TCNT1;
 00B4           ; 
 00B4                   .dbline 60
 00B4           ;       if((PIND|0xFE)==0xFE) //PORTD.0为0,校准模式,不接Cx和Lx
 00B4           ;       { 
 00B4 4423              tst R20
 00B6 19F4              brne L6
 00B8                   .dbline 60
 00B8 462F              mov R20,R22
 00BA 4058              subi R20,128    ; addi 128
 00BC 02C0              xjmp L7
 00BE           L6:
 00BE                   .dbline 62
 00BE           ;               LCD_write_char(0x01,0);
 00BE           ;               delay_nms(2);
 00BE 462F              mov R20,R22
 00C0 4054              subi R20,64    ; addi 192
 00C2           L7:
 00C2                   .dbline 63
 00C2           ;               LCD_set_xy(0,0);
 00C2 2227              clr R18
 00C4 3327              clr R19
 00C6 042F              mov R16,R20
 00C8 1127              clr R17
 00CA 9FDF              xcall _LCD_write_char
 00CC                   .dbline -2
 00CC           L5:
 00CC 0E940000          xcall pop_gset2
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbsym r address 20 c
 00D2                   .dbsym r y 20 c
 00D2                   .dbsym r x 22 c
 00D2                   .dbend
 00D2                   .dbfunc e LCD_init _LCD_init fV
                        .even
 00D2           _LCD_init::
 00D2                   .dbline -1
 00D2                   .dbline 67
 00D2           ;               
 00D2           ;               LCD_write_char(0,'C');
 00D2           ;               LCD_write_char(0,'n');
 00D2           ;               LCD_write_char(0,'=');
 00D2                   .dbline 68
 00D2           ;               calc_Cn();
 00D2 0EE1              ldi R16,30
 00D4 73D3              xcall _delay_nms
 00D6                   .dbline 69
 00D6           ;               
 00D6 2227              clr R18
 00D8 3327              clr R19
 00DA 08E2              ldi R16,40
 00DC 10E0              ldi R17,0
 00DE 95DF              xcall _LCD_write_char
 00E0                   .dbline 70
 00E0           ;               LCD_write_string(0,1,"TCNT1=");
 00E0 2227              clr R18
 00E2 3327              clr R19
 00E4 0CE0              ldi R16,12
 00E6 10E0              ldi R17,0
 00E8 90DF              xcall _LCD_write_char
 00EA                   .dbline 71
 00EA           ;               LCD_write_string(1,1,itoa(buf,last_TCNT1,10));
 00EA 2227              clr R18
 00EC 3327              clr R19
 00EE 01E0              ldi R16,1
 00F0 10E0              ldi R17,0
 00F2 8BDF              xcall _LCD_write_char
 00F4                   .dbline 72
 00F4           ;               
 00F4 0EE1              ldi R16,30
 00F6 62D3              xcall _delay_nms
 00F8                   .dbline -2
 00F8           L8:
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbend
 00FA                   .dbfunc e LCD_write_string _LCD_write_string fV
 00FA           ;              s -> R20,R21
 00FA           ;              y -> R10
 00FA           ;              x -> R22
                        .even
 00FA           _LCD_write_string::
 00FA 0E940000          xcall push_gset3
 00FE A22E              mov R10,R18
 0100 602F              mov R22,R16
 0102 4E81              ldd R20,y+6
 0104 5F81              ldd R21,y+7
 0106                   .dbline -1
 0106                   .dbline 76
 0106           ;       }
 0106           ;       else //测量模式,接入被测元件Cx或Lx
 0106           ;       { 
 0106           ;               LCD_write_char(0x01,0);
 0106                   .dbline 77
 0106           ;               delay_nms(2);
 0106 2A2D              mov R18,R10
 0108 062F              mov R16,R22
 010A D0DF              xcall _LCD_set_xy
 010C 08C0              xjmp L11
 010E           L10:
 010E                   .dbline 80
 010E                   .dbline 81
 010E FA01              movw R30,R20
 0110 2081              ldd R18,z+0
 0112 3327              clr R19
 0114 0027              clr R16
 0116 1127              clr R17
 0118 78DF              xcall _LCD_write_char
 011A                   .dbline 82
 011A 4F5F              subi R20,255  ; offset = 1
 011C 5F4F              sbci R21,255
 011E                   .dbline 83
 011E           L11:
 011E                   .dbline 79
 011E           ;               
 011E           ;               LCD_set_xy(0,0);
 011E FA01              movw R30,R20
 0120 2080              ldd R2,z+0
 0122 2220              tst R2
 0124 A1F7              brne L10
 0126                   .dbline -2
 0126           L9:
 0126 0E940000          xcall pop_gset3
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbsym r s 20 pc
 012C                   .dbsym r y 10 c
 012C                   .dbsym r x 22 c
 012C                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\资料文件\MCU\myLC/LCD.h
 0000           _buf::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\资料文件\MCU\myLC/LCD.h
 0001                   .blkb 7
                        .area idata
 0001 00000000000000    .byte 0,0,0,0,0,0,0
                        .area data(ram, con, rel)
 0008                   .dbfile E:\资料文件\MCU\myLC/LCD.h
 0008                   .dbfile E:\资料文件\MCU\myLC\LC.c
 0008                   .dbsym e buf _buf A[8:8]c
                        .area text(rom, con, rel)
 012C                   .dbfile E:\资料文件\MCU\myLC\LC.c
 012C                   .dbfunc e main _main fV
 012C           ;              k -> R20
                        .even
 012C           _main::
 012C                   .dbline -1
 012C                   .dbline 24
 012C                   .dbline 25
 012C 45E0              ldi R20,5

⌨️ 快捷键说明

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