📄 tx.lst
字号:
__text_start:
__start:
004F EFCF LDI R28,0xFF
0050 E1D0 LDI R29,0x10
0051 BFCD OUT 0x3D,R28
0052 BFDE OUT 0x3E,R29
0053 51C0 SUBI R28,0x10
0054 40D0 SBCI R29,0
0055 EA0A LDI R16,0xAA
0056 8308 STD Y+0,R16
0057 2400 CLR R0
0058 E1E2 LDI R30,0x12
0059 E0F1 LDI R31,1
005A E015 LDI R17,5
005B 34E6 CPI R30,0x46
005C 07F1 CPC R31,R17
005D F011 BEQ 0x0060
005E 9201 ST R0,Z+
005F CFFB RJMP 0x005B
0060 8300 STD Z+0,R16
0061 E8EC LDI R30,0x8C
0062 E0F0 LDI R31,0
0063 E0A0 LDI R26,0
0064 E0B1 LDI R27,1
0065 E010 LDI R17,0
0066 39EE CPI R30,0x9E
0067 07F1 CPC R31,R17
0068 F021 BEQ 0x006D
0069 95C8 LPM
006A 9631 ADIW R30,1
006B 920D ST R0,X+
006C CFF9 RJMP 0x0066
006D D076 RCALL _main
006E 0000 NOP
_exit:
006F CFFF RJMP _exit
FILE: E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\spi.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:spi.h
(0006) *摘 要:SPI口的相关函数实现
(0007) *
(0008) *当前版本:1.1
(0009) *作 者:王微
(0010) *完成日期:2008.4.22
(0011) ****************************************/
(0012)
(0013) #include "spi.h"
(0014)
(0015) /*************************************************
(0016) 函数功能:初始化SPI口
(0017) 输入参数:无
(0018) 输出参数:无
(0019) 返 回 值:无
(0020) **************************************************/
(0021) void init_spi(void)
(0022) {
(0023) unsigned char temp;
(0024) DDRB|=(1<<MOSI)|(1<<SCK)|(1<<TRX_CE);//设置MOSI、SCK和SS 为输出,其他为输入
_init_spi:
temp --> R16
0070 B387 IN R24,0x17
0071 6087 ORI R24,7
0072 BB87 OUT 0x17,R24
(0025) DDRE|=(1<<CSN)|(1<<PWR_UP)|(1<<TX_EN);//设置端口E的1,2,3引脚为输出引脚
0073 B182 IN R24,0x02
0074 608E ORI R24,0xE
0075 B982 OUT 0x02,R24
(0026)
(0027) SPCR = (1<<SPE)|(1<<MSTR);// 使能SPI,主机模式,设置时钟速率为fck/4
0076 E580 LDI R24,0x50
0077 B98D OUT 0x0D,R24
(0028) SPSR = BIT(SPI2X);
0078 E081 LDI R24,1
0079 B98E OUT 0x0E,R24
(0029)
(0030) temp = SPSR; //!!! 读一次SPSR为了清除SPIF位和WCOL位
007A B10E IN R16,0x0E
(0031)
(0032) temp = SPDR; //清空SPI,和中断标志,使SPI空闲
007B B10F IN R16,0x0F
007C 9508 RET
_SpiWrite:
temp --> R20
data_spi --> R16
007D D16F RCALL push_gset1
007E 0000 NOP
(0033) }
(0034)
(0035) /**************************************************
(0036) 函数功能:写SPI一个字节
(0037) 输入参数:要写的数据
(0038) 输出参数:无
(0039) 返 回 值:对应指令的结果
(0040) **************************************************/
(0041) unsigned char SpiWrite(unsigned char data_spi)
(0042) {
(0043) unsigned temp;
(0044) SPDR=data_spi;
007F B90F OUT 0x0F,R16
(0045) while(!(SPSR & (1<<SPIF))){;}//等待传输结束
0080 9B77 SBIS 0x0E,7
0081 CFFE RJMP 0x0080
(0046) temp=SPDR;
0082 B14F IN R20,0x0F
0083 2755 CLR R21
(0047) return temp;
0084 2F04 MOV R16,R20
0085 D16A RCALL pop_gset1
0086 0000 NOP
0087 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
0088 2700 CLR R16
0089 C006 RJMP 0x0090
(0025) {
(0026) for (t=0;t<250;t++)
008A 2722 CLR R18
008B C001 RJMP 0x008D
008C 9523 INC R18
008D 3F2A CPI R18,0xFA
008E F3E8 BCS 0x008C
008F 9503 INC R16
0090 3005 CPI R16,5
0091 F3C0 BCS 0x008A
0092 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
0093 2700 CLR R16
0094 C006 RJMP 0x009B
(0044) {
(0045) for (t=0;t<150;t++)
0095 2722 CLR R18
0096 C001 RJMP 0x0098
0097 9523 INC R18
0098 3926 CPI R18,0x96
0099 F3E8 BCS 0x0097
009A 9503 INC R16
009B 3001 CPI R16,1
009C F3C0 BCS 0x0095
009D 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
009E 2700 CLR R16
009F 2711 CLR R17
00A0 C002 RJMP 0x00A3
00A1 5F0F SUBI R16,0xFF
00A2 4F1F SBCI R17,0xFF
00A3 3A0C CPI R16,0xAC
00A4 E0ED LDI R30,0xD
00A5 071E CPC R17,R30
00A6 F3D0 BCS 0x00A1
00A7 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
00A8 2700 CLR R16
00A9 2711 CLR R17
00AA C00B RJMP 0x00B6
(0077) {
(0078) for (i=0;i<3;i++)
00AB 2722 CLR R18
00AC 2733 CLR R19
00AD C002 RJMP 0x00B0
00AE 5F2F SUBI R18,0xFF
00AF 4F3F SBCI R19,0xFF
00B0 3023 CPI R18,3
00B1 E0E0 LDI R30,0
00B2 073E CPC R19,R30
00B3 F3D0 BCS 0x00AE
00B4 5F0F SUBI R16,0xFF
00B5 4F1F SBCI R17,0xFF
00B6 3A0C CPI R16,0xAC
00B7 E0ED LDI R30,0xD
00B8 071E CPC R17,R30
00B9 F388 BCS 0x00AB
00BA 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
00BB 2700 CLR R16
00BC C001 RJMP 0x00BE
00BD 9503 INC R16
00BE 3F0A CPI R16,0xFA
00BF F3E8 BCS 0x00BD
00C0 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
00C1 2700 CLR R16
00C2 C001 RJMP 0x00C4
00C3 9503 INC R16
00C4 3109 CPI R16,0x19
00C5 F3E8 BCS 0x00C3
00C6 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:
00C7 B38A IN R24,0x1A
00C8 6083 ORI R24,3
00C9 BB8A OUT 0x1A,R24
(0124) LED_OFF;
00CA 98D8 CBI 0x1B,0
00CB 98D9 CBI 0x1B,1
00CC 9508 RET
(0125) }
(0126)
(0127) /*
(0128) *函数功能:蜂鸣器初始化程序
(0129) *输入参数:无
(0130) *输出参数:无
(0131) *返 回 值:无
(0132) */
(0133) void initbuzzer(void)
(0134) {
(0135)
(0136) DDRA|=(1<<DDA6);// 设置A6口为输出口(蜂鸣器的连接口)
_initbuzzer:
00CD 9AD6 SBI 0x1A,6
(0137) BUZZER_OFF;//关蜂鸣器
00CE 98DE CBI 0x1B,6
00CF 9508 RET
FILE: E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\INT.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:INT.c
(0006) *摘 要:外部中断的初始化实现
(0007) *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -