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

📄 uart.lis

📁 PTR8000无线通信模块的单片机控制程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00A6 0895              ret
 00A8                   .dbend
 00A8                   .dbfunc e Init_PTR8_CR _Init_PTR8_CR fV
                        .even
 00A8           _Init_PTR8_CR::
 00A8                   .dbline -1
 00A8                   .dbline 312
 00A8           ; //*****************************************************************************
 00A8           ; 
 00A8           ; void Init_PTR8_CR(void)
 00A8           ; {
 00A8                   .dbline 313
 00A8           ;       PORTB &= ~BIT(PB2);     //SS SET LOW, Write Configuration register Start
 00A8 C298              cbi 0x18,2
 00AA                   .dbline 314
 00AA           ;       SPI_M_Send(WC); //Wirte Configuration Register,Start From 0000
 00AA 0027              clr R16
 00AC ECDF              rcall _SPI_M_Send
 00AE                   .dbline 315
 00AE           ;       SPI_M_Send(RC0);        //Write CH_NO [7 : 0]
 00AE 00910000          lds R16,_RC0
 00B2 E9DF              rcall _SPI_M_Send
 00B4                   .dbline 316
 00B4           ;       SPI_M_Send(RC1);                //Write Byte 2
 00B4 00910100          lds R16,_RC1
 00B8 E6DF              rcall _SPI_M_Send
 00BA                   .dbline 317
 00BA           ;       SPI_M_Send(0x44);
 00BA 04E4              ldi R16,68
 00BC E4DF              rcall _SPI_M_Send
 00BE                   .dbline 318
 00BE           ;       SPI_M_Send(0x01);       //RX payload = 1 byte 
 00BE 01E0              ldi R16,1
 00C0 E2DF              rcall _SPI_M_Send
 00C2                   .dbline 319
 00C2           ;       SPI_M_Send(0x01);       //TX payload = 1 byte
 00C2 01E0              ldi R16,1
 00C4 E0DF              rcall _SPI_M_Send
 00C6                   .dbline 320
 00C6           ;       SPI_M_Send(Add);
 00C6 00910200          lds R16,_Add
 00CA DDDF              rcall _SPI_M_Send
 00CC                   .dbline 321
 00CC           ;       SPI_M_Send(Add);
 00CC 00910200          lds R16,_Add
 00D0 DADF              rcall _SPI_M_Send
 00D2                   .dbline 322
 00D2           ;       SPI_M_Send(Add);
 00D2 00910200          lds R16,_Add
 00D6 D7DF              rcall _SPI_M_Send
 00D8                   .dbline 323
 00D8           ;       SPI_M_Send(Add);
 00D8 00910200          lds R16,_Add
 00DC D4DF              rcall _SPI_M_Send
 00DE                   .dbline 324
 00DE           ;       SPI_M_Send(0x58);
 00DE 08E5              ldi R16,88
 00E0 D2DF              rcall _SPI_M_Send
 00E2                   .dbline 325
 00E2           ;       PORTB |= BIT(PB2);      //SS set HIGH,Write Configuration Register Finish
 00E2 C29A              sbi 0x18,2
 00E4                   .dbline -2
 00E4                   .dbline 327
 00E4           ;       
 00E4           ; }
 00E4           L34:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e Init_Device _Init_Device fV
                        .even
 00E6           _Init_Device::
 00E6                   .dbline -1
 00E6                   .dbline 340
 00E6           ; //************************************************************************************
 00E6           ; /*    函数名:        Init_Device
 00E6           ;       功能说明:初始化设备。LED亮一下,蜂鸣器叫一声,初始化串口
 00E6           ;       参数说明:无
 00E6           ;       返回值:        无
 00E6           ;       函数作者:Haibo YU
 00E6           ;       版本号:        1.0
 00E6           ;       创建时间:2005-12-23
 00E6           ;       修改时间:
 00E6           ;       修改内容:                              */
 00E6           ; 
 00E6           ; void Init_Device(void)
 00E6           ; {
 00E6                   .dbline 342
 00E6           ;       //stop errant interrupts until set up
 00E6           ;       CLI(); //disable all interrupts
 00E6 F894              cli
 00E8                   .dbline 344
 00E8           ;       
 00E8           ;       init_port();            //初始化各控制端口
 00E8 93DF              rcall _init_port
 00EA                   .dbline 345
 00EA           ;       LED(0); //LED全亮
 00EA 0027              clr R16
 00EC B4DF              rcall _LED
 00EE                   .dbline 346
 00EE           ;       Uart_Init();            //串口初始化
 00EE B9DF              rcall _Uart_Init
 00F0                   .dbline 347
 00F0           ;       SPI_MasterInit();//SPI Master Init
 00F0 C7DF              rcall _SPI_MasterInit
 00F2                   .dbline 348
 00F2           ;       MCUCR = 0x00;
 00F2 2224              clr R2
 00F4 25BE              out 0x35,R2
 00F6                   .dbline 349
 00F6           ;       GICR  = 0x00;
 00F6 2BBE              out 0x3b,R2
 00F8                   .dbline 350
 00F8           ;       TIMSK = 0x00; //timer interrupt sources
 00F8 29BE              out 0x39,R2
 00FA                   .dbline 352
 00FA           ;       
 00FA           ;       SEI(); //re-enable interrupts
 00FA 7894              sei
 00FC                   .dbline 353
 00FC           ;       LED(1); //LED全灭
 00FC 01E0              ldi R16,1
 00FE                   .dbline -2
 00FE                   .dbline 355
 00FE           ;       //all peripherals are now initialised
 00FE           ; }
 00FE           L35:
 00FE                   .dbline 0 ; func end
 00FE ABCF              rjmp _LED
 0100                   .dbend
 0100                   .dbfunc e main _main fV
 0100           ;              F -> <dead>
 0100           ;             dr -> R20
 0100           ;              i -> R22
                        .even
 0100           _main::
 0100                   .dbline -1
 0100                   .dbline 366
 0100           ; 
 0100           ; //**************************************************************************
 0100           ; 
 0100           ; 
 0100           ; //****************************主程序**********************************
 0100           ; /*无线模块发送程序,无线模块发送的字符为通过串口接收的字符,规定为0和1,而且每次数据发送
 0100           ; 成功LED都会闪一次*/
 0100           ; //********************发送程序**********************
 0100           ; 
 0100           ; void main(void)
 0100           ; {
 0100                   .dbline 368
 0100           ;       unsigned char i,dr,F;
 0100           ;       Init_Device();  //Init All Device
 0100 F2DF              rcall _Init_Device
 0102                   .dbline 370
 0102           ; 
 0102           ;       Init_PTR8_CR(); //Set Configuration register
 0102 D2DF              rcall _Init_PTR8_CR
 0104                   .dbline 371
 0104           ;       Delay_1ms();
 0104 91DF              rcall _Delay_1ms
 0106                   .dbline 373
 0106           ; 
 0106           ;       PTR8_RX();      //Set RX mode
 0106 CEDF              rcall _PTR8_RX
 0108                   .dbline 374
 0108           ;       PTR8_TREN();    // TRX_CE = 1  Enable RX
 0108 C9DF              rcall _PTR8_TREN
 010A                   .dbline 375
 010A           ;       Delay_1ms();
 010A 8EDF              rcall _Delay_1ms
 010C 2BC0              rjmp L38
 010E           L37:
 010E                   .dbline 377
 010E           ;       while(1)
 010E           ;       {
 010E                   .dbline 378
 010E           ;                       LED(1);
 010E 01E0              ldi R16,1
 0110 A2DF              rcall _LED
 0112                   .dbline 379
 0112           ;                       Delay_Nms(1000);
 0112 08EE              ldi R16,1000
 0114 13E0              ldi R17,3
 0116 92DF              rcall _Delay_Nms
 0118                   .dbline 381
 0118           ;                       
 0118           ;                       PTR8_TX();              //set TX mode
 0118 C3DF              rcall _PTR8_TX
 011A                   .dbline 382
 011A           ;                       Delay_1ms();
 011A 86DF              rcall _Delay_1ms
 011C                   .dbline 383
 011C           ;                       PORTB &= ~BIT(PB2);     //SS = 0
 011C C298              cbi 0x18,2
 011E                   .dbline 384
 011E           ;                       SPI_M_Send(WTP);                //Write TX payload
 011E 00E2              ldi R16,32
 0120 B2DF              rcall _SPI_M_Send
 0122                   .dbline 386
 0122           ;                       
 0122           ;                       SPI_M_Send(Recv);               // Data = Recv[]
 0122 00910000          lds R16,_Recv
 0126 AFDF              rcall _SPI_M_Send
 0128                   .dbline 388
 0128           ;                       
 0128           ;                       PORTB |= BIT(PB2);              //ss = 1                
 0128 C29A              sbi 0x18,2
 012A                   .dbline 389
 012A           ;                       Delay_1ms();
 012A 7EDF              rcall _Delay_1ms
 012C                   .dbline 390
 012C           ;                       PORTB &= ~BIT(PB2);             //SS = 0
 012C C298              cbi 0x18,2
 012E                   .dbline 391
 012E           ;                       SPI_M_Send(WTA);                //write TX_Address
 012E 02E2              ldi R16,34
 0130 AADF              rcall _SPI_M_Send
 0132                   .dbline 392
 0132           ;                       for(i = 0 ; i < 4 ; i ++)
 0132 6627              clr R22
 0134 04C0              rjmp L43
 0136           L40:
 0136                   .dbline 393
 0136                   .dbline 394
 0136 00910200          lds R16,_Add
 013A A5DF              rcall _SPI_M_Send
 013C                   .dbline 395
 013C           L41:
 013C                   .dbline 392
 013C 6395              inc R22
 013E           L43:
 013E                   .dbline 392
 013E 6430              cpi R22,4
 0140 D0F3              brlo L40
 0142                   .dbline 396
 0142           ;                       {
 0142           ;                                 SPI_M_Send(Add);      //TX_Address = Add
 0142           ;                       }
 0142           ;                       PORTB |= BIT(PB2);              //ss = 1
 0142 C29A              sbi 0x18,2
 0144                   .dbline 397
 0144           ;                       Delay_1ms();
 0144 71DF              rcall _Delay_1ms
 0146                   .dbline 398
 0146           ;                       PTR8_TREN();    //TRX_CE = 1  Enable TX
 0146 AADF              rcall _PTR8_TREN
 0148           L44:
 0148                   .dbline 400
 0148           ;                       do
 0148           ;                               dr = (PINC & 0x04);
 0148 43B3              in R20,0x13
 014A 4470              andi R20,4
 014C           L45:
 014C                   .dbline 401
 014C 4423              tst R20
 014E E1F3              breq L44
 0150                   .dbline 402
 0150 A3DF              rcall _PTR8_Standby
 0152                   .dbline 403
 0152 6ADF              rcall _Delay_1ms
 0154                   .dbline 405
 0154 0027              clr R16
 0156 7FDF              rcall _LED
 0158                   .dbline 406
 0158 08EE              ldi R16,1000
 015A 13E0              ldi R17,3
 015C 6FDF              rcall _Delay_Nms
 015E                   .dbline 408
 015E A2DF              rcall _PTR8_RX
 0160                   .dbline 409
 0160 9DDF              rcall _PTR8_TREN
 0162                   .dbline 410
 0162 62DF              rcall _Delay_1ms
 0164                   .dbline 414
 0164           L38:
 0164                   .dbline 376
 0164 D4CF              rjmp L37
 0166           X0:
 0166                   .dbline -2
 0166                   .dbline 415
 0166           ;                       while(dr == 0); //等待数据发送成功
 0166           ;                       PTR8_Standby(); //TRX_CE = 0  disable TX
 0166           ;                       Delay_1ms();
 0166           ;                       
 0166           ;                       LED(0);
 0166           ;                       Delay_Nms(1000);
 0166           ;                       
 0166           ;                       PTR8_RX();      //Set RX mode
 0166           ;                       PTR8_TREN();    // TRX_CE = 1  Enable RX
 0166           ;                       Delay_1ms();
 0166           ;                       
 0166           ;                       
 0166           ;                       
 0166           ;       }   
 0166           ; }
 0166           L36:
 0166                   .dbline 0 ; func end
 0166 0895              ret
 0168                   .dbsym l F 1 c
 0168                   .dbsym r dr 20 c
 0168                   .dbsym r i 22 c
 0168                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
 0000           _Recv::
 0000                   .blkb 1
 0001                   .dbsym e Recv _Recv c
 0001           _Tran::
 0001                   .blkb 1
 0002                   .dbsym e Tran _Tran c

⌨️ 快捷键说明

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