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

📄 mock_uart.lis

📁 电梯楼层采集器代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Mock_Uart.C
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
 0000                   .dbfunc e Timer0_init _Timer0_init fV
                        .even
 0000           _Timer0_init::
 0000                   .dbline -1
 0000                   .dbline 17
 0000           ; 
 0000           ; //模拟串口通讯
 0000           ; #include"include.h"
 0000           ; 
 0000           ; #define TX_LO()                       PORTD &= ~(1<<4)         //发送端口
 0000           ; #define TX_HI()                       PORTD |= (1<<4)
 0000           ; 
 0000           ; #define RX_Port()       (PIND&(1<<2))    //接收端口
 0000           ; 
 0000           ; unsigned char F_TM;
 0000           ; 
 0000           ; //TIMER0 initialize - prescale:8
 0000           ; // WGM: Normal
 0000           ; // desired value: 104uSec
 0000           ; // actual value: 104.000uSec (0.0%)
 0000           ; void Timer0_init(void)
 0000           ; {
 0000                   .dbline 18
 0000           ;  TCCR0 = 0x00; //stop
 0000 2224              clr R2
 0002 23BE              out 0x33,R2
 0004                   .dbline 19
 0004           ;  TCNT0 = 0x30; //set count
 0004 80E3              ldi R24,48
 0006 82BF              out 0x32,R24
 0008                   .dbline 20
 0008           ;  OCR0  = 0xD0; //set compare
 0008 80ED              ldi R24,208
 000A 8CBF              out 0x3c,R24
 000C                   .dbline -2
 000C           L2:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C940700          jmp _Timer0_ovf_isr
                        .area text(rom, con, rel)
 000E                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
 000E                   .dbfunc e Timer0_ovf_isr _Timer0_ovf_isr fV
                        .even
 000E           _Timer0_ovf_isr::
 000E 8A93              st -y,R24
 0010 8FB7              in R24,0x3f
 0012 8A93              st -y,R24
 0014                   .dbline -1
 0014                   .dbline 25
 0014           ; }
 0014           ; 
 0014           ; #pragma interrupt_handler Timer0_ovf_isr:10
 0014           ; void Timer0_ovf_isr(void)
 0014           ; {
 0014                   .dbline 26
 0014           ;  TCNT0 = 0x30; //reload counter value
 0014 80E3              ldi R24,48
 0016 82BF              out 0x32,R24
 0018                   .dbline 27
 0018           ;  F_TM = 1;
 0018 81E0              ldi R24,1
 001A 80930800          sts _F_TM,R24
 001E                   .dbline -2
 001E           L3:
 001E                   .dbline 0 ; func end
 001E 8991              ld R24,y+
 0020 8FBF              out 0x3f,R24
 0022 8991              ld R24,y+
 0024 1895              reti
 0026                   .dbend
 0026                   .dbfunc e PSendChar _PSendChar fV
 0026           ;             ii -> R20
 0026           ;           inch -> R16
                        .even
 0026           _PSendChar::
 0026 4A93              st -y,R20
 0028                   .dbline -1
 0028                   .dbline 33
 0028           ; }
 0028           ; 
 0028           ; //------------------------------------------------------------------------------
 0028           ; //发送一个字符
 0028           ; void PSendChar(unsigned char inch)
 0028           ; {
 0028                   .dbline 35
 0028           ;     unsigned char ii;
 0028           ;     ii=0;
 0028 4427              clr R20
 002A                   .dbline 36
 002A           ;     F_TM=0;
 002A 2224              clr R2
 002C 20920800          sts _F_TM,R2
 0030                   .dbline 37
 0030           ;     TX_LO(); //start bit
 0030 9498              cbi 0x12,4
 0032                   .dbline 38
 0032           ;     TCCR0 = 0x02; //start timer
 0032 82E0              ldi R24,2
 0034 83BF              out 0x33,R24
 0036           L5:
 0036                   .dbline 39
 0036           ;     while(!F_TM);
 0036           L6:
 0036                   .dbline 39
 0036 20900800          lds R2,_F_TM
 003A 2220              tst R2
 003C E1F3              breq L5
 003E           X0:
 003E 0EC0              xjmp L9
 0040           L8:
 0040                   .dbline 41
 0040           ;     while(ii<8)
 0040           ;       {
 0040                   .dbline 42
 0040           ;         if(inch&1)
 0040 00FF              sbrs R16,0
 0042 02C0              rjmp L11
 0044           X1:
 0044                   .dbline 43
 0044           ;          {
 0044                   .dbline 44
 0044           ;            TX_HI(); 
 0044 949A              sbi 0x12,4
 0046                   .dbline 45
 0046           ;                }
 0046 01C0              xjmp L12
 0048           L11:
 0048                   .dbline 47
 0048           ;         else
 0048           ;          {
 0048                   .dbline 48
 0048           ;            TX_LO();
 0048 9498              cbi 0x12,4
 004A                   .dbline 49
 004A           ;          }
 004A           L12:
 004A                   .dbline 50
 004A           ;         F_TM=0;
 004A 2224              clr R2
 004C 20920800          sts _F_TM,R2
 0050           L13:
 0050                   .dbline 51
 0050           ;         while(!F_TM);
 0050           L14:
 0050                   .dbline 51
 0050 20900800          lds R2,_F_TM
 0054 2220              tst R2
 0056 E1F3              breq L13
 0058           X2:
 0058                   .dbline 52
 0058           ;         ii++;
 0058 4395              inc R20
 005A                   .dbline 53
 005A           ;         inch>>=1;
 005A 0695              lsr R16
 005C                   .dbline 54
 005C           ;       }
 005C           L9:
 005C                   .dbline 40
 005C 4830              cpi R20,8
 005E 80F3              brlo L8
 0060           X3:
 0060                   .dbline 55
 0060           ;     TX_HI();
 0060 949A              sbi 0x12,4
 0062                   .dbline 56
 0062           ;     F_TM=0;
 0062 2224              clr R2
 0064 20920800          sts _F_TM,R2
 0068           L16:
 0068                   .dbline 57
 0068           ;     while(!F_TM);
 0068           L17:
 0068                   .dbline 57
 0068 20900800          lds R2,_F_TM
 006C 2220              tst R2
 006E E1F3              breq L16
 0070           X4:
 0070                   .dbline 58
 0070           ;     TCCR0 = 0x00; //stop//停止timer
 0070 2224              clr R2
 0072 23BE              out 0x33,R2
 0074                   .dbline -2
 0074           L4:
 0074                   .dbline 0 ; func end
 0074 4991              ld R20,y+
 0076 0895              ret
 0078                   .dbsym r ii 20 c
 0078                   .dbsym r inch 16 c
 0078                   .dbend
 0078                   .dbfunc e PGetChar _PGetChar fc
 0078           ;            rch -> R16
 0078           ;             ii -> R18
                        .even
 0078           _PGetChar::
 0078                   .dbline -1
 0078                   .dbline 63
 0078           ; }
 0078           ; //------------------------------------------------------------------------------
 0078           ; //接收一个字符
 0078           ; unsigned char PGetChar()
 0078           ; {
 0078                   .dbline 65
 0078           ;     unsigned char ii,rch;
 0078           ;     TCCR0 = 0x02; //start timer
 0078 82E0              ldi R24,2
 007A 83BF              out 0x33,R24
 007C                   .dbline 66
 007C           ;     F_TM=0;
 007C 2224              clr R2
 007E 20920800          sts _F_TM,R2
 0082                   .dbline 67
 0082           ;     ii=0;
 0082 2227              clr R18
 0084                   .dbline 68
 0084           ;     rch=0;
 0084 0027              clr R16
 0086           L20:
 0086                   .dbline 69
 0086           ;     while(!F_TM); //等过起始位
 0086           L21:
 0086                   .dbline 69
 0086 20900800          lds R2,_F_TM
 008A 2220              tst R2
 008C E1F3              breq L20
 008E           X5:
 008E 0CC0              xjmp L24
 0090           L23:
 0090                   .dbline 71
 0090           ;     while(ii<8)
 0090           ;      {
 0090                   .dbline 72
 0090           ;        rch>>=1;
 0090 0695              lsr R16
 0092                   .dbline 73
 0092           ;        if(RX_Port())
 0092 829B              sbis 0x10,2
 0094 01C0              rjmp L26
 0096           X6:
 0096                   .dbline 74
 0096           ;          {
 0096                   .dbline 75
 0096           ;            rch|=0x80;
 0096 0068              ori R16,128
 0098                   .dbline 76
 0098           ;          }
 0098           L26:
 0098                   .dbline 77
 0098           ;        ii++;
 0098 2395              inc R18
 009A                   .dbline 78
 009A           ;        F_TM=0;
 009A 2224              clr R2
 009C 20920800          sts _F_TM,R2
 00A0           L28:
 00A0                   .dbline 79
 00A0           ;        while(!F_TM);
 00A0           L29:
 00A0                   .dbline 79
 00A0 20900800          lds R2,_F_TM
 00A4 2220              tst R2
 00A6 E1F3              breq L28
 00A8           X7:
 00A8                   .dbline 80
 00A8           ;       }
 00A8           L24:
 00A8                   .dbline 70
 00A8 2830              cpi R18,8
 00AA 90F3              brlo L23
 00AC           X8:
 00AC                   .dbline 81
 00AC           ;      F_TM=0;
 00AC 2224              clr R2
 00AE 20920800          sts _F_TM,R2
 00B2 03C0              xjmp L32
 00B4           L31:
 00B4                   .dbline 83
 00B4           ;      while(!F_TM)
 00B4           ;         {
 00B4                   .dbline 84
 00B4           ;            if(RX_Port())
 00B4 829B              sbis 0x10,2
 00B6 01C0              rjmp L34
 00B8           X9:
 00B8                   .dbline 85
 00B8           ;               {
 00B8                   .dbline 86
 00B8           ;                 break;
 00B8 04C0              xjmp L33
 00BA           L34:
 00BA                   .dbline 88
 00BA           ;                }
 00BA           ;          }
 00BA           L32:
 00BA                   .dbline 82
 00BA 20900800          lds R2,_F_TM
 00BE 2220              tst R2
 00C0 C9F3              breq L31
 00C2           X10:
 00C2           L33:
 00C2                   .dbline 89
 00C2           ;       TCCR0 = 0x00; //stop//停止timer
 00C2 2224              clr R2
 00C4 23BE              out 0x33,R2
 00C6                   .dbline 90
 00C6           ;       return rch;
 00C6                   .dbline -2
 00C6           L19:
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbsym r rch 16 c
 00C8                   .dbsym r ii 18 c
 00C8                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
 0000           L37:
 0000                   .blkb 2
                        .area text(rom, con, rel)
 00C8                   .dbfile C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\Mock_Uart.C
 00C8                   .dbfunc e BUS_SendPacket_51Device _BUS_SendPacket_51Device fV
 00C8                   .dbstruct 0 260 Device51_StructOfProtocol
 00C8                   .dbfield 0 Address c
 00C8                   .dbfield 1 Length i
 00C8                   .dbfield 3 Command c
 00C8                   .dbfield 4 Data A[256:256]c
 00C8                   .dbend
 00C8                   .dbsym s C51_uart L37 pc
 00C8           ;        C51_buf -> R20,R21
 00C8           ;            CRC -> y+0
 00C8           ;          Count -> R20,R21
 00C8           ;              i -> R10
 00C8           ;            tmp -> R12
                        .even
 00C8           _BUS_SendPacket_51Device::
 00C8 0E940000          xcall push_xgset303C
 00CC 2297              sbiw R28,2
 00CE                   .dbline -1
 00CE                   .dbline 96
 00CE           ; }
 00CE           ; //------------------------------------------------------------------------------
 00CE           ; //------------------------------------------------------------------------------
 00CE           ; //发送数据
 00CE           ; void BUS_SendPacket_51Device(void)
 00CE           ; {
 00CE                   .dbline 101
 00CE           ;     unsigned char i,tmp;
 00CE           ;     unsigned int CRC,Count;
 00CE           ;       static unsigned char *C51_uart;
 00CE           ;     struct Device51_StructOfProtocol *C51_buf;
 00CE           ;       C51max485_on();
 00CE 969A              sbi 0x12,6
 00D0                   .dbline 102
 00D0           ;       PSendChar(BOOT_CODE);
 00D0 0EEF              ldi R16,254
 00D2 A9DF              xcall _PSendChar
 00D4                   .dbline 103
 00D4           ;       PSendChar(BOOT_CODE);//发送引导码
 00D4 0EEF              ldi R16,254
 00D6 A7DF              xcall _PSendChar

⌨️ 快捷键说明

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