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

📄 at45db~1.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module at45db161.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\gkdoor\oldboardsoftware\at45db161.c
 0000                   .dbfunc e read_byte _read_byte fc
 0000           ;           data -> R16
 0000           ;              i -> R18
                        .even
 0000           _read_byte::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; #include <d:\gkdoor\oldboardsoftware\main.h>
 0000           ; #include <d:\gkdoor\oldboardsoftware\at45db161.h>
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; unsigned char read_byte(void)
 0000           ; {
 0000                   .dbline 7
 0000           ;       unsigned char i,data=0;
 0000 0027              clr R16
 0002                   .dbline 8
 0002           ;       SET_45IO();
 0002 8D98              cbi 0x11,5
 0004                   .dbline 9
 0004           ;     for (i=0;i<8;i++)
 0004 2227              clr R18
 0006 09C0              xjmp L5
 0008           L2:
 0008                   .dbline 10
 0008           ;     {
 0008                   .dbline 11
 0008           ;           SET_45SCK();
 0008 8E98              cbi 0x11,6
 000A                   .dbline 12
 000A           ;               data<<=1;
 000A 000F              lsl R16
 000C                   .dbline 13
 000C           ;         if((PIND&0x20)==0x20)   // sda bit input data.
 000C 80B3              in R24,0x10
 000E 8072              andi R24,32
 0010 8032              cpi R24,32
 0012 09F4              brne L6
 0014                   .dbline 14
 0014           ;               data|=1;
 0014 0160              ori R16,1
 0016           L6:
 0016                   .dbline 15
 0016 8E9A              sbi 0x11,6
 0018                   .dbline 16
 0018           L3:
 0018                   .dbline 9
 0018 2395              inc R18
 001A           L5:
 001A                   .dbline 9
 001A 2830              cpi R18,8
 001C A8F3              brlo L2
 001E                   .dbline 17
 001E           ;               CLEAR_45SCK();
 001E           ;     }
 001E           ;     return data; 
 001E                   .dbline -2
 001E           L1:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r data 16 c
 0020                   .dbsym r i 18 c
 0020                   .dbend
 0020                   .dbfunc e write_byte _write_byte fV
 0020           ;              i -> R20
 0020           ;          data1 -> R22
                        .even
 0020           _write_byte::
 0020 0E940000          xcall push_gset2
 0024 602F              mov R22,R16
 0026                   .dbline -1
 0026                   .dbline 20
 0026           ; }
 0026           ; void write_byte(unsigned char data1)
 0026           ; {
 0026                   .dbline 22
 0026           ;       unsigned char i;
 0026           ;       for(i=0;i<8;i++)
 0026 4427              clr R20
 0028 08C0              xjmp L12
 002A           L9:
 002A                   .dbline 23
 002A           ;       {
 002A                   .dbline 24
 002A           ;      if (data1&0x80)   
 002A 67FF              sbrs R22,7
 002C 02C0              rjmp L13
 002E                   .dbline 25
 002E           ;      SET_45IO();        
 002E 8D98              cbi 0x11,5
 0030 01C0              xjmp L14
 0032           L13:
 0032                   .dbline 27
 0032           ;      else 
 0032           ;      CLEAR_45IO();
 0032 8D9A              sbi 0x11,5
 0034           L14:
 0034                   .dbline 28
 0034 07D0              xcall _CLOCK1
 0036                   .dbline 29
 0036 660F              lsl R22
 0038                   .dbline 30
 0038           L10:
 0038                   .dbline 22
 0038 4395              inc R20
 003A           L12:
 003A                   .dbline 22
 003A 4830              cpi R20,8
 003C B0F3              brlo L9
 003E                   .dbline -2
 003E                   .dbline 31
 003E           ;        CLOCK1();
 003E           ;        data1<<=1;
 003E           ;      }
 003E           ; }
 003E           L8:
 003E 0E940000          xcall pop_gset2
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r i 20 c
 0044                   .dbsym r data1 22 c
 0044                   .dbend
 0044                   .dbfunc e CLOCK1 _CLOCK1 fV
                        .even
 0044           _CLOCK1::
 0044                   .dbline -1
 0044                   .dbline 33
 0044           ; void CLOCK1(void)
 0044           ; { 
 0044                   .dbline 34
 0044           ;      SET_45SCK();
 0044 8E98              cbi 0x11,6
 0046                   .dbline 35
 0046           ;      DELAY();
 0046 02D0              xcall _DELAY
 0048                   .dbline 36
 0048           ;      CLEAR_45SCK();
 0048 8E9A              sbi 0x11,6
 004A                   .dbline -2
 004A                   .dbline 37
 004A           ; }
 004A           L15:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbend
 004C                   .dbfunc e DELAY _DELAY fV
 004C           ;              i -> R16
                        .even
 004C           _DELAY::
 004C                   .dbline -1
 004C                   .dbline 39
 004C           ; void DELAY(void)
 004C           ; {
 004C                   .dbline 41
 004C 0027              clr R16
 004E 01C0              xjmp L20
 0050           L17:
 0050                   .dbline 41
 0050           L18:
 0050                   .dbline 41
 0050 0395              inc R16
 0052           L20:
 0052                   .dbline 41
 0052           ;      unsigned char i;
 0052           ;      for (i=0;i<2;i++);
 0052 0230              cpi R16,2
 0054 E8F3              brlo L17
 0056                   .dbline -2
 0056                   .dbline 42
 0056           ; }
 0056           L16:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r i 16 c
 0058                   .dbend
 0058                   .dbfunc e read_status _read_status fc
 0058           ;          temp2 -> R20
                        .even
 0058           _read_status::
 0058 0E940000          xcall push_gset1
 005C                   .dbline -1
 005C                   .dbline 44
 005C           ; unsigned char read_status(void)
 005C           ; {
 005C                   .dbline 46
 005C           ;        unsigned char temp2;
 005C           ;        CLEAR_45CS();
 005C 8C9A              sbi 0x11,4
 005E                   .dbline 47
 005E           ;        CLEAR_45SCK();
 005E 8E9A              sbi 0x11,6
 0060                   .dbline 48
 0060           ;        SET_45IO();
 0060 8D98              cbi 0x11,5
 0062                   .dbline 49
 0062           ;        write_byte(0x57);
 0062 07E5              ldi R16,87
 0064 DDDF              xcall _write_byte
 0066                   .dbline 50
 0066           ;        CLOCK1();
 0066 EEDF              xcall _CLOCK1
 0068                   .dbline 51
 0068           ;        NOP();
 0068 0000              nop
 006A                   .dbline 52
 006A           ;        temp2=read_byte();
 006A CADF              xcall _read_byte
 006C 402F              mov R20,R16
 006E                   .dbline 53
 006E           ;        SET_45CS();
 006E 8C98              cbi 0x11,4
 0070                   .dbline 54
 0070           ;        return temp2;
 0070                   .dbline -2
 0070           L21:
 0070 0E940000          xcall pop_gset1
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbsym r temp2 20 c
 0076                   .dbend
 0076                   .dbfunc e write_buffer1 _write_buffer1 fV
 0076           ;              i -> R20,R21
 0076           ;             pt -> R22,R23
 0076           ;         bitnum -> R10,R11
                        .even
 0076           _write_buffer1::
 0076 0E940000          xcall push_gset3
 007A B901              movw R22,R18
 007C 5801              movw R10,R16
 007E                   .dbline -1
 007E                   .dbline 57
 007E           ; }
 007E           ; void write_buffer1(unsigned int bitnum,unsigned char *pt)
 007E           ; {
 007E                   .dbline 59
 007E           ;        unsigned int i;
 007E           ;        CLEAR_45CS();
 007E 8C9A              sbi 0x11,4
 0080                   .dbline 60
 0080           ;        CLEAR_45SCK();
 0080 8E9A              sbi 0x11,6
 0082                   .dbline 61
 0082           ;        SET_45IO();
 0082 8D98              cbi 0x11,5
 0084                   .dbline 62
 0084           ;        write_byte(0x84);
 0084 04E8              ldi R16,132
 0086 CCDF              xcall _write_byte
 0088                   .dbline 63
 0088           ;        write_byte(0x00);
 0088 0027              clr R16
 008A CADF              xcall _write_byte
 008C                   .dbline 64
 008C           ;        i=bitnum>>8;
 008C A501              movw R20,R10
 008E 452F              mov R20,R21
 0090 5527              clr R21
 0092                   .dbline 65
 0092           ;        write_byte((unsigned char)i);
 0092 042F              mov R16,R20
 0094 C5DF              xcall _write_byte
 0096                   .dbline 66
 0096           ;        write_byte((unsigned char)bitnum);
 0096 0A2D              mov R16,R10
 0098 C3DF              xcall _write_byte
 009A                   .dbline 67
 009A           ;        for(i=0;i<528;i++)
 009A 4427              clr R20
 009C 5527              clr R21
 009E 06C0              xjmp L26
 00A0           L23:
 00A0                   .dbline 68
 00A0 FB01              movw R30,R22
 00A2 0191              ld R16,Z+
 00A4 BF01              movw R22,R30
 00A6 BCDF              xcall _write_byte
 00A8           L24:
 00A8                   .dbline 67
 00A8 4F5F              subi R20,255  ; offset = 1
 00AA 5F4F              sbci R21,255
 00AC           L26:
 00AC                   .dbline 67
 00AC 4031              cpi R20,16
 00AE E2E0              ldi R30,2
 00B0 5E07              cpc R21,R30
 00B2 B0F3              brlo L23
 00B4                   .dbline 69
 00B4           ;        write_byte(*pt++);
 00B4           ;        DELAY();
 00B4 CBDF              xcall _DELAY
 00B6                   .dbline 70
 00B6           ;        SET_45CS();
 00B6 8C98              cbi 0x11,4
 00B8                   .dbline -2
 00B8                   .dbline 71
 00B8           ; }
 00B8           L22:
 00B8 0E940000          xcall pop_gset3
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbsym r i 20 i
 00BE                   .dbsym r pt 22 pc
 00BE                   .dbsym r bitnum 10 i
 00BE                   .dbend
 00BE                   .dbfunc e write_mainmemory _write_mainmemory fV
 00BE           ;              i -> R20,R21
 00BE           ;             pt -> R22,R23
 00BE           ;        pagenum -> R10,R11
                        .even
 00BE           _write_mainmemory::
 00BE 0E940000          xcall push_gset3
 00C2 B901              movw R22,R18
 00C4 5801              movw R10,R16
 00C6                   .dbline -1
 00C6                   .dbline 73
 00C6           ; void write_mainmemory(unsigned int pagenum,unsigned char *pt)
 00C6           ; {
 00C6                   .dbline 75
 00C6           ;        unsigned int i;
 00C6           ;        CLEAR_45CS();
 00C6 8C9A              sbi 0x11,4
 00C8                   .dbline 76
 00C8           ;        SET_45IO();
 00C8 8D98              cbi 0x11,5
 00CA                   .dbline 77
 00CA           ;        CLEAR_45SCK();
 00CA 8E9A              sbi 0x11,6
 00CC                   .dbline 78
 00CC           ;        write_byte(0x82);
 00CC 02E8              ldi R16,130
 00CE A8DF              xcall _write_byte
 00D0                   .dbline 79
 00D0           ;        i=pagenum>>6;
 00D0 26E0              ldi R18,6
 00D2 30E0              ldi R19,0
 00D4 8501              movw R16,R10
 00D6 0E940000          xcall lsr16
 00DA                   .dbline 80
 00DA           ;        write_byte((unsigned char)i);
 00DA A2DF              xcall _write_byte
 00DC                   .dbline 81
 00DC           ;        i=pagenum<<2;
 00DC A501              movw R20,R10
 00DE 440F              lsl R20
 00E0 551F              rol R21
 00E2 440F              lsl R20
 00E4 551F              rol R21
 00E6                   .dbline 82
 00E6           ;        write_byte((unsigned char)i);
 00E6 042F              mov R16,R20
 00E8 9BDF              xcall _write_byte
 00EA                   .dbline 83
 00EA           ;        write_byte(0x00);

⌨️ 快捷键说明

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