📄 twimain.s
字号:
; 创建时间:2005-12-02
; 修改时间:
; 修改内容: */
;
; void SPI_MasterInit(void)
; {
.dbline 204
; SPCR = 0x51; //SPI控制寄存器初始化:SPI允许,MSB先发,主模式,16分频
ldi R24,81
out 0xd,R24
.dbline -2
.dbline 205
; }
L21:
.dbline 0 ; func end
ret
.dbend
.dbfunc e SPI_M_Send _SPI_M_Send fV
; c -> R16
.even
_SPI_M_Send::
.dbline -1
.dbline 218
; //**********************************************************************
; /* 函数名: SPI_M_Send
; 功能说明:SPI主机发送一个字节函数。
; 参数说明: c为要发送的字节
; 返回值: 无
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-02
; 修改时间:2005-12-05
; 修改内容: 去掉SS信号控制语句 */
;
; void SPI_M_Send(unsigned char c)
; {
.dbline 219
; SPDR = c; //传送开始
out 0xf,R16
L23:
.dbline 221
L24:
.dbline 220
; while(!(SPSR & 0X80))
sbis 0xe,7
rjmp L23
.dbline -2
.dbline 223
; ; //查询SPIF标志
;
; }
L22:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e SPI_M_Recv _SPI_M_Recv fc
; c -> R16
.even
_SPI_M_Recv::
.dbline -1
.dbline 237
; //************************************************************************
;
; /* 函数名: SPI_M_Recv
; 功能说明:SPI主机方式接收一个字节函数。
; 参数说明:任意无效字符
; 返回值: 返回接收到的字节
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-06
; 修改时间:
; 修改内容: */
;
; unsigned char SPI_M_Recv(unsigned char c)
; {
.dbline 238
; SPDR = c; //传送开始
out 0xf,R16
L27:
.dbline 240
L28:
.dbline 239
; while(!(SPSR & 0X80))
sbis 0xe,7
rjmp L27
.dbline 241
; ; //查询SPIF标志
; return SPDR; //返回接收的字符
in R16,0xf
.dbline -2
L26:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e PTR8_Standby _PTR8_Standby fV
.even
_PTR8_Standby::
.dbline -1
.dbline 258
; }
; //*************************************************************************
;
; //***************************PTR8000无线模块用函数*****************
;
; /* 函数名: PTR8_Standby
; 功能说明:将PTR8置为待机状态。SET TRX_CE = 0
; 参数说明:无
; 返回值: 无
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-23
; 修改时间:
; 修改内容: */
;
; void PTR8_Standby(void)
; {
.dbline 259
; PORTD &= ~BIT(PD1); //TRX_CE = 0
cbi 0x12,1
.dbline -2
.dbline 260
; }
L30:
.dbline 0 ; func end
ret
.dbend
.dbfunc e PTR8_TREN _PTR8_TREN fV
.even
_PTR8_TREN::
.dbline -1
.dbline 274
; //**************************************************************************
;
; /* 函数名: PTR8_TREN
; 功能说明:将PTR8置为工作状态。SET TRX_CE = 1
; 参数说明:无
; 返回值: 无
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-23
; 修改时间:
; 修改内容: */
;
; void PTR8_TREN(void)
; {
.dbline 275
; PORTD |= BIT(PD1); //TRX_CE = 1
sbi 0x12,1
.dbline -2
.dbline 276
; }
L31:
.dbline 0 ; func end
ret
.dbend
.dbfunc e PTR8_TX _PTR8_TX fV
.even
_PTR8_TX::
.dbline -1
.dbline 290
; //***************************************************************************
;
; /* 函数名: PTR8_TX
; 功能说明:将PTR8置为发送状态。
; 参数说明:无
; 返回值: 无
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-23
; 修改时间:
; 修改内容: */
;
; void PTR8_TX(void)
; {
.dbline 291
; PORTD |= BIT(PD0); //TX_EN = 1
sbi 0x12,0
.dbline -2
.dbline 292
; }
L32:
.dbline 0 ; func end
ret
.dbend
.dbfunc e PTR8_RX _PTR8_RX fV
.even
_PTR8_RX::
.dbline -1
.dbline 306
; //***************************************************************************
;
; /* 函数名: PTR8_RX
; 功能说明:将PTR8置为接收状态。
; 参数说明:无
; 返回值: 无
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-23
; 修改时间:
; 修改内容: */
;
; void PTR8_RX(void)
; {
.dbline 307
; PORTD &= ~BIT(PD0); //TX_EN = 0
cbi 0x12,0
.dbline -2
.dbline 308
; }
L33:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Init_PTR8_CR _Init_PTR8_CR fV
.even
_Init_PTR8_CR::
.dbline -1
.dbline 312
; //*****************************************************************************
;
; void Init_PTR8_CR(void)
; {
.dbline 313
; PORTB &= ~BIT(PB2); //SS SET LOW, Write Configuration register Start
cbi 0x18,2
.dbline 314
; SPI_M_Send(WC); //Wirte Configuration Register,Start From 0000
clr R16
rcall _SPI_M_Send
.dbline 315
; SPI_M_Send(RC0); //Write CH_NO [7 : 0]
lds R16,_RC0
rcall _SPI_M_Send
.dbline 316
; SPI_M_Send(RC1); //Write Byte 2
lds R16,_RC1
rcall _SPI_M_Send
.dbline 317
; SPI_M_Send(0x44);
ldi R16,68
rcall _SPI_M_Send
.dbline 318
; SPI_M_Send(0x01); //RX payload = 1 byte
ldi R16,1
rcall _SPI_M_Send
.dbline 319
; SPI_M_Send(0x01); //TX payload = 1 byte
ldi R16,1
rcall _SPI_M_Send
.dbline 320
; SPI_M_Send(Add);
lds R16,_Add
rcall _SPI_M_Send
.dbline 321
; SPI_M_Send(Add);
lds R16,_Add
rcall _SPI_M_Send
.dbline 322
; SPI_M_Send(Add);
lds R16,_Add
rcall _SPI_M_Send
.dbline 323
; SPI_M_Send(Add);
lds R16,_Add
rcall _SPI_M_Send
.dbline 324
; SPI_M_Send(0x58);
ldi R16,88
rcall _SPI_M_Send
.dbline 325
; PORTB |= BIT(PB2); //SS set HIGH,Write Configuration Register Finish
sbi 0x18,2
.dbline -2
.dbline 327
;
; }
L34:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Init_Device _Init_Device fV
.even
_Init_Device::
.dbline -1
.dbline 340
; //************************************************************************************
; /* 函数名: Init_Device
; 功能说明:初始化设备。LED亮一下,蜂鸣器叫一声,初始化串口
; 参数说明:无
; 返回值: 无
; 函数作者:Haibo YU
; 版本号: 1.0
; 创建时间:2005-12-23
; 修改时间:
; 修改内容: */
;
; void Init_Device(void)
; {
.dbline 342
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 344
;
; port_init(); //初始化各控制端口
rcall _port_init
.dbline 345
; Uart_Init(); //串口初始化
rcall _Uart_Init
.dbline 346
; SPI_MasterInit();//SPI Master Init
rcall _SPI_MasterInit
.dbline 347
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 348
; GICR = 0x00;
out 0x3b,R2
.dbline 349
; TIMSK = 0x00; //timer interrupt sources
out 0x39,R2
.dbline 351
;
; SEI(); //re-enable interrupts
sei
.dbline -2
.dbline 353
; //all peripherals are now initialised
; }
L35:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; dr -> R20
.even
_main::
.dbline -1
.dbline 361
;
;
;
;
; //****************************** 主函数 ***************************************
; //******************************************************************************
; void main(void)
; {
.dbline 364
;
; unsigned char dr;
; Init_Device(); //Init All Device
rcall _Init_Device
.dbline 366
;
; Init_PTR8_CR(); //Set Configuration register
rcall _Init_PTR8_CR
.dbline 367
; Delay_1ms();
rcall _Delay_1ms
.dbline 369
;
; PTR8_RX(); //Set RX mode
rcall _PTR8_RX
.dbline 370
; PTR8_TREN(); // TRX_CE = 1 Enable RX
rcall _PTR8_TREN
.dbline 371
; Delay_1ms();
rcall _Delay_1ms
rjmp L38
L37:
.dbline 373
; while(1)
; {
.dbline 375
;
; dr = (PINC & 0x04);
in R20,0x13
andi R20,4
.dbline 376
; if(dr != 0) //DR置位,无线数据接收成功
breq L40
.dbline 377
; {
.dbline 378
; PTR8_Standby(); //TRX_CE = 0,disable RX
rcall _PTR8_Standby
.dbline 379
; Delay_1ms();
rcall _Delay_1ms
.dbline 380
; PORTB &= ~BIT(PB2); //SS = 0
cbi 0x18,2
.dbline 381
; SPI_M_Send(RRP); //Read RX payload
ldi R16,36
rcall _SPI_M_Send
.dbline 384
;
;
; Recv = SPI_M_Recv(0xff);
ldi R16,255
rcall _SPI_M_Recv
sts _Recv,R16
.dbline 386
;
; PORTB |= BIT(PB2); //SS = 1
sbi 0x18,2
.dbline 399
;
; /* if(Recv == 0)
; {
; LED(0); //接收到0 LED亮
; Delay_Nms(1000);
; }
; else
; {
; LED(1);//接收到1 LED灭
; Delay_Nms(1000);
; }*/
;
; PTR8_RX(); //Set RX mode
rcall _PTR8_RX
.dbline 400
; PTR8_TREN(); // TRX_CE = 1 Enable RX
rcall _PTR8_TREN
.dbline 401
; Delay_1ms();
rcall _Delay_1ms
.dbline 403
;
; twiWriteByte(0xc0,Recv);
lds R18,_Recv
ldi R16,192
rcall _twiWriteByte
.dbline 404
; }
L40:
.dbline 405
L38:
.dbline 372
rjmp L37
X0:
.dbline -2
.dbline 406
; }
; }
L36:
.dbline 0 ; func end
ret
.dbsym r dr 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
_Recv::
.blkb 1
.dbsym e Recv _Recv c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -