📄 rx.lst
字号:
__text_start:
__start:
004E EFCF LDI R28,0xFF
004F E1D0 LDI R29,0x10
0050 BFCD OUT 0x3D,R28
0051 BFDE OUT 0x3E,R29
0052 51C0 SUBI R28,0x10
0053 40D0 SBCI R29,0
0054 EA0A LDI R16,0xAA
0055 8308 STD Y+0,R16
0056 2400 CLR R0
0057 E1E0 LDI R30,0x10
0058 E0F1 LDI R31,1
0059 E011 LDI R17,1
005A 34E4 CPI R30,0x44
005B 07F1 CPC R31,R17
005C F011 BEQ 0x005F
005D 9201 ST R0,Z+
005E CFFB RJMP 0x005A
005F 8300 STD Z+0,R16
0060 E8EC LDI R30,0x8C
0061 E0F0 LDI R31,0
0062 E0A0 LDI R26,0
0063 E0B1 LDI R27,1
0064 E010 LDI R17,0
0065 39EC CPI R30,0x9C
0066 07F1 CPC R31,R17
0067 F021 BEQ 0x006C
0068 95C8 LPM
0069 9631 ADIW R30,1
006A 920D ST R0,X+
006B CFF9 RJMP 0x0065
006C D077 RCALL _main
006D 0000 NOP
_exit:
006E CFFF RJMP _exit
FILE: E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\SPI.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:SPI.c
(0006) *摘 要:SPI的子程序实现
(0007) *
(0008) *当前版本:1.1
(0009) *作 者:王微
(0010) *完成日期:2008.4.22
(0011) ****************************************/
(0012) #include<iom128v.h>
(0013) #include<macros.h>
(0014) #include"nrf.h"
(0015) #include"spi.h"
(0016)
(0017) /*************************************************
(0018) 函数功能:初始化SPI口
(0019) 输入参数:无
(0020) 返回值:无
(0021) **************************************************/
(0022) void init_spi()
(0023) {
(0024) unsigned char temp;
(0025) DDRB|=(1<<MOSI)|(1<<SCK)|(1<<TRX_CE);//设置MOSI、SCK和SS 为输出,其他为输入
_init_spi:
temp --> R16
006F B387 IN R24,0x17
0070 6087 ORI R24,7
0071 BB87 OUT 0x17,R24
(0026) DDRE|=(1<<CSN)|(1<<PWR_UP)|(1<<TX_EN);//设置端口E的1,2,3引脚为输出引脚
0072 B182 IN R24,0x02
0073 608E ORI R24,0xE
0074 B982 OUT 0x02,R24
(0027)
(0028) SPCR = (1<<SPE)|(1<<MSTR);//|(1<<SPR0);// 使能SPI,主机模式,设置时钟速率为fck/4
0075 E580 LDI R24,0x50
0076 B98D OUT 0x0D,R24
(0029) SPSR = BIT(SPI2X); //SPI时钟加倍
0077 E081 LDI R24,1
0078 B98E OUT 0x0E,R24
(0030)
(0031) temp = SPSR; //!!! 读一次SPSR为了清除SPIF位和WCOL位
0079 B10E IN R16,0x0E
(0032)
(0033) temp = SPDR; //清空SPI,和中断标志,使SPI空闲
007A B10F IN R16,0x0F
007B 9508 RET
_SpiWrite:
temp --> R20
data_spi --> R16
007C D179 RCALL push_gset1
007D 0000 NOP
(0034) }
(0035)
(0036) /**************************************************
(0037) 函数功能:写SPI一个字节
(0038) 输入参数:SPI指令
(0039) 返回值:对应指令的结果
(0040) **************************************************/
(0041) unsigned char SpiWrite(unsigned char data_spi)
(0042) {
(0043) unsigned temp;
(0044) SPDR=data_spi;
007E B90F OUT 0x0F,R16
(0045) while(!(SPSR & (1<<SPIF))){;}//等待传输结束
007F 9B77 SBIS 0x0E,7
0080 CFFE RJMP 0x007F
(0046) temp=SPDR;
0081 B14F IN R20,0x0F
0082 2755 CLR R21
(0047) return temp;
0083 2F04 MOV R16,R20
0084 D174 RCALL pop_gset1
0085 0000 NOP
0086 9508 RET
FILE: E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\common.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:common.c
(0006) *摘 要:公共函数和变量的定义
(0007) *
(0008) *当前版本:1.1
(0009) *作 者:董齐芬
(0010) *完成日期:2008.5.17
(0011) ****************************************/
(0012)
(0013) #include "common.h"
(0014)
(0015) /**************************************************
(0016) 函数功能:延时650us
(0017) 输入参数:无
(0018) 输出参数:无
(0019) 返 回 值:无
(0020) **************************************************/
(0021) void Delay650us(void)
(0022) {
(0023) unsigned char i,t;
(0024) for (i=0;i<5;i++)
_Delay650us:
i --> R16
t --> R18
0087 2700 CLR R16
0088 C006 RJMP 0x008F
(0025) {
(0026) for (t=0;t<250;t++)
0089 2722 CLR R18
008A C001 RJMP 0x008C
008B 9523 INC R18
008C 3F2A CPI R18,0xFA
008D F3E8 BCS 0x008B
008E 9503 INC R16
008F 3005 CPI R16,5
0090 F3C0 BCS 0x0089
0091 9508 RET
(0027) {
(0028) ;
(0029) }
(0030) }
(0031) }
(0032)
(0033)
(0034) /**************************************************
(0035) 函数功能:延时300us
(0036) 输入参数:无
(0037) 输出参数:无
(0038) 返 回 值:无
(0039) **************************************************/
(0040) void Delay300us(void)
(0041) {
(0042) unsigned char i,t;
(0043) for (i=0;i<1;i++)
_Delay300us:
i --> R16
t --> R18
0092 2700 CLR R16
0093 C006 RJMP 0x009A
(0044) {
(0045) for (t=0;t<150;t++)
0094 2722 CLR R18
0095 C001 RJMP 0x0097
0096 9523 INC R18
0097 3926 CPI R18,0x96
0098 F3E8 BCS 0x0096
0099 9503 INC R16
009A 3001 CPI R16,1
009B F3C0 BCS 0x0094
009C 9508 RET
(0046) {
(0047) ;
(0048) }
(0049) }
(0050) }
(0051)
(0052) /**************************************************
(0053) 函数功能:延时3ms
(0054) 输入参数:无
(0055) 输出参数:无
(0056) 返 回 值: 无
(0057) **************************************************/
(0058) void Delay3ms(void)
(0059) {
(0060) unsigned int t;
(0061) for (t=0;t<3500;t++)
_Delay3ms:
t --> R16
009D 2700 CLR R16
009E 2711 CLR R17
009F C002 RJMP 0x00A2
00A0 5F0F SUBI R16,0xFF
00A1 4F1F SBCI R17,0xFF
00A2 3A0C CPI R16,0xAC
00A3 E0ED LDI R30,0xD
00A4 071E CPC R17,R30
00A5 F3D0 BCS 0x00A0
00A6 9508 RET
(0062) {
(0063) ;
(0064) }
(0065) }
(0066)
(0067) /**************************************************
(0068) 函数功能:延时一段时间,该延时主要用于测试
(0069) 输入参数:无
(0070) 输出参数:无
(0071) 返 回 值: 无
(0072) **************************************************/
(0073) void Delays(void)
(0074) {
(0075) unsigned int t,i;
(0076) for (t=0;t<3500;t++)
_Delays:
t --> R16
i --> R18
00A7 2700 CLR R16
00A8 2711 CLR R17
00A9 C00B RJMP 0x00B5
(0077) {
(0078) for (i=0;i<3;i++)
00AA 2722 CLR R18
00AB 2733 CLR R19
00AC C002 RJMP 0x00AF
00AD 5F2F SUBI R18,0xFF
00AE 4F3F SBCI R19,0xFF
00AF 3023 CPI R18,3
00B0 E0E0 LDI R30,0
00B1 073E CPC R19,R30
00B2 F3D0 BCS 0x00AD
00B3 5F0F SUBI R16,0xFF
00B4 4F1F SBCI R17,0xFF
00B5 3A0C CPI R16,0xAC
00B6 E0ED LDI R30,0xD
00B7 071E CPC R17,R30
00B8 F388 BCS 0x00AA
00B9 9508 RET
(0079) {;}
(0080) }
(0081) }
(0082)
(0083) /**************************************************
(0084) 函数功能:延时100us
(0085) 输入参数:无
(0086) 输出参数:无
(0087) 返 回 值:无
(0088) **************************************************/
(0089) void Delay100us(void)
(0090) {
(0091) unsigned char t;
(0092) for (t=0;t<250;t++)
_Delay100us:
t --> R16
00BA 2700 CLR R16
00BB C001 RJMP 0x00BD
00BC 9503 INC R16
00BD 3F0A CPI R16,0xFA
00BE F3E8 BCS 0x00BC
00BF 9508 RET
(0093) {
(0094) ;
(0095) }
(0096)
(0097) }
(0098)
(0099) /*
(0100) *函数功能:延时40ns,用于数字电位器的模拟SPI口
(0101) *输入参数:无
(0102) *输出参数:无
(0103) *返 回 值:无
(0104) */
(0105) void Delay40ns(void)
(0106) {
(0107) unsigned char t;
(0108)
(0109) for (t=0;t<25;t++)
_Delay40ns:
t --> R16
00C0 2700 CLR R16
00C1 C001 RJMP 0x00C3
00C2 9503 INC R16
00C3 3109 CPI R16,0x19
00C4 F3E8 BCS 0x00C2
00C5 9508 RET
(0110) {
(0111) ;
(0112) }
(0113) }
(0114)
(0115) /*
(0116) *函数功能:led端口初始化程序
(0117) *输入参数:无
(0118) *输出参数:无
(0119) *返 回 值:无
(0120) */
(0121) void initled(void)
(0122) {
(0123) DDRA|=((1<<DDA1)|(1<<DDA0));//设置A口的输出引脚
_initled:
00C6 B38A IN R24,0x1A
00C7 6083 ORI R24,3
00C8 BB8A OUT 0x1A,R24
(0124) LED_OFF;
00C9 98D8 CBI 0x1B,0
00CA 98D9 CBI 0x1B,1
00CB 9508 RET
(0125) }
(0126)
(0127) /*
(0128) *函数功能:蜂鸣器初始化程序
(0129) *输入参数:无
(0130) *输出参数:无
(0131) *返 回 值:无
(0132) */
(0133) void initbuzzer(void)
(0134) {
(0135)
(0136) DDRA|=(1<<DDA6);// 设置A6口为输出口(蜂鸣器的连接口)
_initbuzzer:
00CC 9AD6 SBI 0x1A,6
(0137) BUZZER_OFF;//关蜂鸣器
00CD 98DE CBI 0x1B,6
00CE 9508 RET
FILE: E:\心电监护系统\测试程序\第一阶段\无线测试\接收端\INT.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:INT.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -