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

📄 ad.lis

📁 基于ATMEGA16的AD转换的C程序源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module ad.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\垃圾站\00\adc\ad.c
 0000                   .dbfile D:\垃圾站\00\adc\delay.h
 0000                   .dbfunc e delay_nus _delay_nus fV
 0000           ;           time -> R16,R17
                        .even
 0000           _delay_nus::
 0000                   .dbline -1
 0000                   .dbline 33
 0000           ; //#define     F_CPU           12000000
 0000           ; #define       F_CPU           11059200
 0000           ; //#define     F_CPU                   8000000
 0000           ; //#define     F_CPU                   7372800
 0000           ; //#define     F_CPU                   4000000
 0000           ; /*************************************************************************
 0000           ; 通用延时头文件:
 0000           ;                          delay_nus(n)延时n微秒
 0000           ;                          delay_nms(n)延时n毫秒
 0000           ; *************************************************************************/
 0000           ; #if F_CPU == 12000000
 0000           ;       void delay_nus(unsigned int time)
 0000           ;       {
 0000           ;               while (time!=0)
 0000           ;               {
 0000           ;                       NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
 0000           ;                       time--;
 0000           ;               }
 0000           ;       }
 0000           ;       void delay_nms(unsigned int time)
 0000           ;       {
 0000           ;               unsigned int i;
 0000           ;               while (time!=0)
 0000           ;               {
 0000           ;                       for(i=0;i<1740;i++);
 0000           ;                       time--;
 0000           ;               }
 0000           ;       }
 0000           ; #endif
 0000           ; 
 0000           ; #if F_CPU == 11059200
 0000           ;       void delay_nus(unsigned int time)
 0000           ;       {
 0000 09C0              xjmp L3
 0002           L2:
 0002                   .dbline 35
 0002           ;               while (time!=0)
 0002           ;               {
 0002                   .dbline 36
 0002           ;                       NOP();NOP();NOP();NOP();NOP();NOP();NOP();
 0002 0000              nop
 0004                   .dbline 36
 0004 0000              nop
 0006                   .dbline 36
 0006 0000              nop
 0008                   .dbline 36
 0008 0000              nop
 000A                   .dbline 36
 000A 0000              nop
 000C                   .dbline 36
 000C 0000              nop
 000E                   .dbline 36
 000E 0000              nop
 0010                   .dbline 37
 0010           ;                       time--;
 0010 0150              subi R16,1
 0012 1040              sbci R17,0
 0014                   .dbline 38
 0014           ;               }
 0014           L3:
 0014                   .dbline 34
 0014 0030              cpi R16,0
 0016 0107              cpc R16,R17
 0018 A1F7              brne L2
 001A           X0:
 001A                   .dbline -2
 001A           L1:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r time 16 i
 001C                   .dbend
 001C                   .dbfunc e delay_nms _delay_nms fV
 001C           ;              i -> R20,R21
 001C           ;           time -> R16,R17
                        .even
 001C           _delay_nms::
 001C 4A93              st -y,R20
 001E 5A93              st -y,R21
 0020                   .dbline -1
 0020                   .dbline 41
 0020           ;       }
 0020           ;       void delay_nms(unsigned int time)
 0020           ;       {
 0020 0BC0              xjmp L7
 0022           L6:
 0022                   .dbline 44
 0022           ;               unsigned int i;
 0022           ;               while (time!=0)
 0022           ;               {
 0022                   .dbline 45
 0022           ;                       for(i=0;i<1580;i++);    
 0022 4427              clr R20
 0024 5527              clr R21
 0026 02C0              xjmp L12
 0028           L9:
 0028                   .dbline 45
 0028           L10:
 0028                   .dbline 45
 0028 4F5F              subi R20,255  ; offset = 1
 002A 5F4F              sbci R21,255
 002C           L12:
 002C                   .dbline 45
 002C 4C32              cpi R20,44
 002E E6E0              ldi R30,6
 0030 5E07              cpc R21,R30
 0032 D0F3              brlo L9
 0034           X1:
 0034                   .dbline 46
 0034           ;                       time--;
 0034 0150              subi R16,1
 0036 1040              sbci R17,0
 0038                   .dbline 47
 0038           ;               }
 0038           L7:
 0038                   .dbline 43
 0038 0030              cpi R16,0
 003A 0107              cpc R16,R17
 003C 91F7              brne L6
 003E           X2:
 003E                   .dbline -2
 003E           L5:
 003E                   .dbline 0 ; func end
 003E 5991              ld R21,y+
 0040 4991              ld R20,y+
 0042 0895              ret
 0044                   .dbsym r i 20 i
 0044                   .dbsym r time 16 i
 0044                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\垃圾站\00\adc\delay.h
 0000           _a::
 0000                   .blkb 2
                        .area idata
 0000 3031              .byte 48,49
                        .area data(ram, con, rel)
 0002                   .dbfile D:\垃圾站\00\adc\delay.h
 0002                   .blkb 2
                        .area idata
 0002 3233              .byte 50,51
                        .area data(ram, con, rel)
 0004                   .dbfile D:\垃圾站\00\adc\delay.h
 0004                   .blkb 2
                        .area idata
 0004 3435              .byte 52,53
                        .area data(ram, con, rel)
 0006                   .dbfile D:\垃圾站\00\adc\delay.h
 0006                   .blkb 2
                        .area idata
 0006 3637              .byte 54,55
                        .area data(ram, con, rel)
 0008                   .dbfile D:\垃圾站\00\adc\delay.h
 0008                   .blkb 2
                        .area idata
 0008 3839              .byte 56,57
                        .area data(ram, con, rel)
 000A                   .dbfile D:\垃圾站\00\adc\delay.h
 000A                   .dbfile D:\垃圾站\00\adc\lcd.h
 000A                   .dbsym e a _a A[10:10]c
 000A           _ADbz::
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile D:\垃圾站\00\adc\lcd.h
 000B                   .dbsym e ADbz _ADbz c
                        .area text(rom, con, rel)
 0044                   .dbfile D:\垃圾站\00\adc\lcd.h
 0044                   .dbfunc e delay _delay fV
 0044           ;              i -> R10
 0044           ;              n -> R16
                        .even
 0044           _delay::
 0044 AA92              st -y,R10
 0046 BA92              st -y,R11
 0048                   .dbline -1
 0048                   .dbline 8
 0048           ; unsigned char a[10]={'0','1','2','3','4','5','6','7','8','9'};
 0048           ; unsigned char ADtmp,ADbz=0;
 0048           ; #define LCD_DATAL PORTA&=~BIT(1)
 0048           ; #define LCD_DATAH PORTA|=BIT(1) 
 0048           ; #define LCD_CLKL PORTA&=~BIT(3)
 0048           ; #define LCD_CLKH PORTA|=BIT(3)
 0048           ; void delay(unsigned char n)
 0048           ; {      
 0048                   .dbline 10
 0048           ;        unsigned char i;
 0048           ;        for(i=0;i<n;i++)                //延时
 0048 AA24              clr R10
 004A 02C0              xjmp L17
 004C           L14:
 004C                   .dbline 11
 004C           ;        {asm("nop");}
 004C                   .dbline 11
 004C 0000              nop
 004E                   .dbline 11
 004E           L15:
 004E                   .dbline 10
 004E A394              inc R10
 0050           L17:
 0050                   .dbline 10
 0050 A016              cp R10,R16
 0052 E0F3              brlo L14
 0054           X3:
 0054                   .dbline -2
 0054           L13:
 0054                   .dbline 0 ; func end
 0054 B990              ld R11,y+
 0056 A990              ld R10,y+
 0058 0895              ret
 005A                   .dbsym r i 10 c
 005A                   .dbsym r n 16 c
 005A                   .dbend
 005A                   .dbfunc e lcd_out _lcd_out fV
 005A           ;              s -> <dead>
 005A           ;              i -> R20
 005A           ;      send_byte -> R10
                        .even
 005A           _lcd_out::
 005A 0E940000          xcall push_xgset300C
 005E A02E              mov R10,R16
 0060                   .dbline -1
 0060                   .dbline 17
 0060           ; }
 0060           ; //*************************************************************************
 0060           ; 
 0060           ; //***************************************************************************
 0060           ; void lcd_out(unsigned char send_byte)
 0060           ; {    
 0060                   .dbline 19
 0060           ;     unsigned char i,s;
 0060           ;       for (i=0;i<8;i++)
 0060 4427              clr R20
 0062 09C0              xjmp L22
 0064           L19:
 0064                   .dbline 20
 0064           ;       {
 0064                   .dbline 21
 0064           ;        if((send_byte&0x80)==0)
 0064 A7FC              sbrc R10,7
 0066 02C0              rjmp L23
 0068           X4:
 0068                   .dbline 22
 0068           ;        {
 0068                   .dbline 23
 0068           ;            LCD_DATAL;
 0068 D998              cbi 0x1b,1
 006A                   .dbline 24
 006A           ;        }
 006A 01C0              xjmp L24
 006C           L23:
 006C                   .dbline 26
 006C           ;        else
 006C           ;        {
 006C                   .dbline 27
 006C           ;            LCD_DATAH;
 006C D99A              sbi 0x1b,1
 006E                   .dbline 28
 006E           ;        }      //送数据
 006E           L24:
 006E                   .dbline 29
 006E           ;        LCD_CLKL;
 006E DB98              cbi 0x1b,3
 0070                   .dbline 30
 0070           ;        LCD_CLKH;
 0070 DB9A              sbi 0x1b,3
 0072                   .dbline 31
 0072           ;        send_byte=send_byte<<1;
 0072 AA0C              lsl R10
 0074                   .dbline 32
 0074           ;       }
 0074           L20:
 0074                   .dbline 19
 0074 4395              inc R20
 0076           L22:
 0076                   .dbline 19
 0076 4830              cpi R20,8
 0078 A8F3              brlo L19
 007A           X5:
 007A                   .dbline 33
 007A           ;       delay(256);
 007A 00E0              ldi R16,0
 007C E3DF              xcall _delay
 007E                   .dbline -2
 007E           L18:
 007E                   .dbline 0 ; func end
 007E 0C940000          xjmp pop_xgset300C
 0082                   .dbsym l s 1 c
 0082                   .dbsym r i 20 c
 0082                   .dbsym r send_byte 10 c
 0082                   .dbend
 0082                   .dbfunc e WR_dat _WR_dat fV
 0082           ;              s -> R20
 0082           ;            dat -> R22
                        .even
 0082           _WR_dat::
 0082 0E940000          xcall push_xgsetF000
 0086 602F              mov R22,R16
 0088                   .dbline -1
 0088                   .dbline 38
 0088           ; }
 0088           ; //***************************************************************************
 0088           ; 
 0088           ; void WR_dat(unsigned char dat)
 0088           ; {
 0088                   .dbline 40
 0088           ;      unsigned char s;
 0088           ;        s=dat&0xf0;

⌨️ 快捷键说明

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