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

📄 main.lis

📁 基于MEAG16的电机PID控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0006                   .blkb 2
                        .area idata
 0006 1CCC              .byte 28,204
                        .area data(ram, con, rel)
 0008                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 0008                   .blkb 2
                        .area idata
 0008 CCCC              .byte 204,204
                        .area data(ram, con, rel)
 000A                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 000A                   .blkb 2
                        .area idata
 000A 00CC              .byte 0,204
                        .area data(ram, con, rel)
 000C                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 000C                   .blkb 2
                        .area idata
 000C CCCC              .byte 204,204
                        .area data(ram, con, rel)
 000E                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 000E                   .blkb 2
                        .area idata
 000E CC43              .byte 204,'C
                        .area data(ram, con, rel)
 0010                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 0010                   .blkb 2
                        .area idata
 0010 4F04              .byte 'O,4
                        .area data(ram, con, rel)
 0012                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 0012                   .dbsym e nRF2401_Conf _nRF2401_Conf A[18:18]c
                        .area text(rom, con, rel)
 019C                   .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
 019C                   .dbfunc e delay_1us _delay_1us fV
                        .even
 019C           _delay_1us::
 019C                   .dbline -1
 019C                   .dbline 381
 019C           ; }  
 019C           ; 
 019C           ; 
 019C           ; 
 019C           ; ///////////////////////////////////////////////////////////////////////////////////////////////////////
 019C           ; 
 019C           ; #define BYTE_BIT0     0x01
 019C           ; #define BYTE_BIT1     0x02
 019C           ; #define BYTE_BIT2     0x04
 019C           ; #define BYTE_BIT3     0x08
 019C           ; #define BYTE_BIT4     0x10
 019C           ; #define BYTE_BIT5     0x20
 019C           ; #define BYTE_BIT6     0x40
 019C           ; #define BYTE_BIT7     0x80
 019C           ; //<nRF2401_Pins 对应引脚>
 019C           ; /*sbit PWR_UP = P1^6;
 019C           ; sbit CE     = P1^2;
 019C           ; //sbit DR2    = P3^5;  //暂时没有用到
 019C           ; //sbit CLK2   = P3^4;
 019C           ; //sbit OUT2   = P3^3;
 019C           ; sbit CS    = P1^1;
 019C           ; sbit DR1   = P1^0;
 019C           ; sbit CLK1  = P3^7;
 019C           ; sbit DATA  = P3^3;
 019C           ; sbit LED0  = P3^4;
 019C           ; sbit LED1  = P3^5;
 019C           ; sbit KEY0  = P3^0;
 019C           ; sbit KEY1  = P3^1;
 019C           ; */
 019C           ; #define NRF_PORT      PORTC
 019C           ; #define NRF_DDR               DDRC
 019C           ; #define NRF_PIN               PINC
 019C           ; 
 019C           ; #define PWR_UP                PC0
 019C           ; #define CE                    PC1
 019C           ; #define CS                    PC4
 019C           ; #define DR1                   PC2
 019C           ; #define CLK1          PC3
 019C           ; #define DATA          PC5
 019C           ; 
 019C           ; #define PWR_UP_STATE          (NRF_PIN&(1<<PWR_UP))==(1<<PWR_UP)
 019C           ; #define CE_STATE                      (NRF_PIN&(1<<CE))==(1<<CE)
 019C           ; #define CS_STATE                      (NRF_PIN&(1<<CS))==(1<<CS)
 019C           ; #define DR1_STATE                     (NRF_PIN&(1<<DR1))==(1<<DR1)
 019C           ; #define CLK1_STATE                    (NRF_PIN&(1<<CLK1))==(1<<CLK1)
 019C           ; #define DATA_STATE                    (NRF_PIN&(1<<DATA))==(1<<DATA)
 019C           ; 
 019C           ; #define PWR_UP_SET()          {NRF_PORT|=1<<PWR_UP;}
 019C           ; #define PWR_UP_CLR()          {NRF_PORT&=~(1<<PWR_UP);}
 019C           ; #define CE_SET()                      {NRF_PORT|=1<<CE;}
 019C           ; #define CE_CLR()                      {NRF_PORT&=~(1<<CE);}
 019C           ; #define CS_SET()                      {NRF_PORT|=1<<CS;}
 019C           ; #define CS_CLR()                      {NRF_PORT&=~(1<<CS);}
 019C           ; #define DR1_SET()                     {NRF_PORT|=1<<DR1;}
 019C           ; #define DR1_CLR()                     {NRF_PORT&=~(1<<DR1);}
 019C           ; #define CLK1_SET()                    {NRF_PORT|=1<<CLK1;}
 019C           ; #define CLK1_CLR()                    {NRF_PORT&=~(1<<CLK1);}
 019C           ; #define DATA_SET()                    {NRF_PORT|=1<<DATA;}
 019C           ; #define DATA_CLR()                    {NRF_PORT&=~(1<<DATA);}
 019C           ; /*
 019C           ; #define LED0_SET()                    {PORTC|=1<<PC0;DDRC|=1<<PC0;}
 019C           ; #define LED0_CLR()                    {PORTC&=~(1<<PC0);}
 019C           ; #define LED1_SET()                    {PORTC|=1<<PC1;DDRC|=1<<PC1;}
 019C           ; #define LED1_CLR()                    {PORTC&=~(1<<PC1);}
 019C           ; 
 019C           ; #define KEY0                  (PINB&(1<<PB0))
 019C           ; #define KEY1                  (PINB&(1<<PB1))
 019C           ; #define KEY_INIT()            {PORTB|=((1<<PB0)|(1<<PB1));DDRB&=~((1<<PB0)|(1<<PB1));}
 019C           ; 
 019C           ; /*
 019C           ; *************************************************************
 019C           ; *     nRF2401 Configuration                                 *
 019C           ; *    保存2401 的配置信息                                    *
 019C           ; *************************************************************
 019C           ; */
 019C           ; /*=====<RF-Configuration-Register   配置信息>=====*/
 019C           ; //芯片测试用,无需修改
 019C           ; #define TEST_2         0x8E               //MSB     D143~D136 
 019C           ; #define TEST_1         0x08               //        D135~D128 
 019C           ; #define TEST_0         0x1C               //       D127~D120 
 019C           ; /* 注意: DATAx_W + ADDRx_W + CRC 的值必须小于256 !
 019C           ; 单个数据包的大小必须小于32 字节(256 位) */
 019C           ; #define DATA2_W        0x10      //0x10=2 字节        //频道2   发送/接收数据长度(单位:Bit) 
 019C           ; #define DATA1_W        0xE0      //0x20=28 字节       //频道1   发送/接收数据长度(单位:Bit) 
 019C           ; /* 注意:2401 忽略ADDR 中超过ADDR_W 设定宽度的那些位,同时地址不能全部设置为0 */
 019C           ; //频道2    接收地址          < - 频道2 未启用
 019C           ; #define ADDR2_4        0x00
 019C           ; #define ADDR2_3        0x1c
 019C           ; #define ADDR2_2        0xcc
 019C           ; #define ADDR2_1        0xcc
 019C           ; #define ADDR2_0        0xcc
 019C           ; //频道 1  接收地址 (当前模块地址)                 <- 只使用到频道 1
 019C           ; #define ADDR1_4        0x00
 019C           ; #define ADDR1_3        0xcc
 019C           ; #define ADDR1_2        0xcc
 019C           ; #define ADDR1_1        0xcc
 019C           ; #define ADDR1_0        0xcc
 019C           ; #define ADDR_W       0x10   //0x10=2 字节      //发送/接收地址宽度(单位:Bit) 
 019C           ; #define CRC_L        0x1                       //CRC 模式  0:8 位 1:16 位 
 019C           ; #define CRC_EN       0x1                       //CRC 校验  0:禁用         1:启用 
 019C           ; #define RX2_EN       0x0                       //双频道功能  0:禁用          1:启用 
 019C           ; #define CM           0x1                       //0:Direct mode   1:ShockBurst mode 
 019C           ; #define RFDR_SB      0x0    //传输速率0:250kbps/1:1Mbps(250kbps比1Mbps传输距离更远)
 019C           ; #define XO_F         0x3    //16M              //nRF2401  晶振频率(具体设置见下图) 
 019C           ; #define RF_PWR       0x3                       //信号发射功率(具体设置见下图) 
 019C           ; #define RF_CH        0x2                       //Channel RF 频率设置 
 019C           ; //Channel = 2400MHz + RF_CH * 1.0MHz
 019C           ; #define RXEN_NRF         0x0                       //0:Tx    1:Rx 
 019C           ; //程序会通过 SetTxMode/SetRxMode 重新设置此项参数
 019C           ; //<将设置信息组合成每个字节的数据信息,此区域无需修改>
 019C           ; #define RFConfig_Bit0  TEST_2
 019C           ; #define RFConfig_Bit1  TEST_1
 019C           ; #define RFConfig_Bit2  TEST_0
 019C           ; #define RFConfig_Bit3  DATA2_W
 019C           ; #define RFConfig_Bit4  DATA1_W
 019C           ; #define RFConfig_Bit5  ADDR2_4
 019C           ; #define RFConfig_Bit6  ADDR2_3
 019C           ; #define RFConfig_Bit7  ADDR2_2
 019C           ; #define RFConfig_Bit8  ADDR2_1
 019C           ; #define RFConfig_Bit9  ADDR2_0
 019C           ; #define RFConfig_Bit10 ADDR1_4
 019C           ; #define RFConfig_Bit11 ADDR1_3
 019C           ; #define RFConfig_Bit12 ADDR1_2
 019C           ; #define RFConfig_Bit13 ADDR1_1
 019C           ; #define RFConfig_Bit14 ADDR1_0
 019C           ; #define RFConfig_Bit15 (ADDR_W<<2 | CRC_L<<1 | CRC_EN)
 019C           ; #define RFConfig_Bit16 (RX2_EN<<7 | CM<<6 | RFDR_SB<<5 | XO_F <<2 | RF_PWR)
 019C           ; #define RFConfig_Bit17 (RF_CH<<1 | RXEN_NRF)
 019C           ; 
 019C           ; //------------------------------------------------------
 019C           ; //通过宏定义将 18 字节的寄存器参数按照各个功能分解,以便于参数的调整
 019C           ; unsigned char /*code*/ nRF2401_Conf[18] =
 019C           ; {
 019C           ;       RFConfig_Bit0, RFConfig_Bit1, RFConfig_Bit2, RFConfig_Bit3,     RFConfig_Bit4,
 019C           ;       RFConfig_Bit5, RFConfig_Bit6, RFConfig_Bit7, RFConfig_Bit8, RFConfig_Bit9,
 019C           ;       RFConfig_Bit10, RFConfig_Bit11, RFConfig_Bit12, RFConfig_Bit13, 
 019C           ;       RFConfig_Bit14, RFConfig_Bit15, RFConfig_Bit16, RFConfig_Bit17
 019C           ; };
 019C           ; //------------------------------------------------------------
 019C           ; 
 019C           ; /*
 019C           ; *************************************************************
 019C           ; *     nRF2401 Tx/Rx functions                                             
 019C           ; *
 019C           ; *
 019C           ; *     void Delay100(void);
 019C           ; *     void Config2401(void);      //配置2401,写入初始化设置
 019C           ; *     void SetTxMode(void);       //设置为发送模式
 019C           ; *     void SetRxMode(void);       //设置为接收模式
 019C           ; *     void nRF2401_TxPacket(unsigned char TxBuf[]);
 019C           ; *                                 //发送TxBuf[] 内的数据 长度由 DATA1_W 决定
 019C           ; *     unsigned char nRF2401_RxPacket(unsigned char *RxBuf);
 019C           ; *                                 //检查是否有数据需要接受 如果有,则保存至RxBuf[]
 019C           ; *                                 //返回值  0:没有接收到数据 1:接收到数据
 019C           ; *************************************************************
 019C           ; */
 019C           ; //16M  晶振  600us 左右
 019C           ; /*void Delay100(void)
 019C           ; {
 019C           ;       unsigned int i;
 019C           ;       for (i=0;i<100;i++);
 019C           ; }*/
 019C           ; 
 019C           ; /*==================================================
 019C           ; nRF2401 设置配置寄存器时序
 019C           ; =====================================================*/
 019C           ; //bdata 
 019C           ; unsigned char DATA_BUF;       //用于ByteRead和ByteWrite函数
 019C           ; #define DATA7    ((DATA_BUF&BYTE_BIT7) != 0)
 019C           ; #define DATA0    ((DATA_BUF&BYTE_BIT0) != 0)
 019C           ; 
 019C           ; 
 019C           ; void delay_1us(void)                 //1us延时函数 
 019C           ;   { 
 019C                   .dbline 382
 019C           ;    asm("nop"); 
 019C 0000              nop
 019E                   .dbline -2
 019E           L33:
 019E                   .dbline 0 ; func end
 019E 0895              ret
 01A0                   .dbend
 01A0                   .dbfunc e delay_nus _delay_nus fV
 01A0           ;              i -> R20,R21
 01A0           ;              n -> R22,R23
                        .even
 01A0           _delay_nus::
 01A0 0E940000          xcall push_gset2
 01A4 B801              movw R22,R16
 01A6                   .dbline -1
 01A6                   .dbline 386
 01A6           ;   } 
 01A6           ; 
 01A6           ; void delay_nus(unsigned int n)       //N us延时函数 
 01A6           ;   { 
 01A6                   .dbline 387
 01A6           ;    unsigned int i=0; 
 01A6 4427              clr R20
 01A8 5527              clr R21
 01AA                   .dbline 388
 01AA           ;    for (i=0;i<n;i++) 
 01AA 03C0              xjmp L38
 01AC           L35:
 01AC                   .dbline 389
 01AC F7DF              xcall _delay_1us
 01AE           L36:
 01AE                   .dbline 388
 01AE 4F5F              subi R20,255  ; offset = 1
 01B0 5F4F              sbci R21,255
 01B2           L38:
 01B2                   .dbline 388
 01B2 4617              cp R20,R22
 01B4 5707              cpc R21,R23
 01B6 D0F3              brlo L35
 01B8                   .dbline -2
 01B8           L34:
 01B8 0E940000          xcall pop_gset2
 01BC                   .dbline 0 ; func end
 01BC 0895              ret
 01BE                   .dbsym r i 20 i
 01BE                   .dbsym r n 22 i
 01BE                   .dbend
 01BE                   .dbfunc e delay_1ms _delay_1ms fV
 01BE           ;              i -> R16,R17
                        .even
 01BE           _delay_1ms::
 01BE                   .dbline -1
 01BE                   .dbline 393
 01BE           ;    delay_1us(); 
 01BE           ;   } 
 01BE           ;    
 01BE           ; void delay_1ms(void)                 //1ms延时函数 
 01BE           ;   { 
 01BE                   .dbline 395
 01BE 0027              clr R16
 01C0 1127              clr R17
 01C2 02C0              xjmp L43
 01C4           L40:
 01C4                   .dbline 395
 01C4           L41:
 01C4                   .dbline 395
 01C4 0F5F              subi R16,255  ; offset = 1
 01C6 1F4F              sbci R17,255
 01C8           L43:
 01C8                   .dbline 395
 01C8           ;    unsigned int i; 
 01C8           ;    for (i=0;i<1140;i++); 
 01C8 0437              cpi R16,116
 01CA E4E0              ldi R30,4
 01CC 1E07              cpc R17,R30
 01CE D0F3              brlo L40
 01D0                   .dbline -2
 01D0           L39:
 01D0                   .dbline 0 ; func end
 01D0 0895              ret
 01D2                   .dbsym r i 16 i
 01D2                   .dbend
 01D2                   .dbfunc e delay_nms _delay_nms fV
 01D2           ;              i -> R20,R21
 01D2           ;              n -> R22,R23
                        .even
 01D2           _delay_nms::
 01D2 0E940000          xcall push_gset2
 01D6 B801              movw R22,R16
 01D8                   .dbline -1
 01D8                   .dbline 399
 01D8           ;   } 
 01D8           ;    
 01D8           ; void delay_nms(unsigned int n)       //N ms延时函数 
 01D8           ;   { 
 01D8                   .dbline 400
 01D8           ;    unsigned int i=0; 

⌨️ 快捷键说明

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