📄 main.lss
字号:
800: 45 cf rjmp .-374 ; 0x68c <Motion_Excute+0x19a>
TCCR1B = 0x00; //stop Timer
802: 1e bc out 0x2e, r1 ; 46
804: 2e 96 adiw r28, 0x0e ; 14
806: 0f b6 in r0, 0x3f ; 63
808: f8 94 cli
80a: de bf out 0x3e, r29 ; 62
80c: 0f be out 0x3f, r0 ; 63
80e: cd bf out 0x3d, r28 ; 61
810: df 91 pop r29
812: cf 91 pop r28
814: 1f 91 pop r17
816: 0f 91 pop r16
818: ff 90 pop r15
81a: ef 90 pop r14
81c: df 90 pop r13
81e: cf 90 pop r12
820: bf 90 pop r11
822: af 90 pop r10
824: 9f 90 pop r9
826: 8f 90 pop r8
828: 7f 90 pop r7
82a: 6f 90 pop r6
82c: 5f 90 pop r5
82e: 4f 90 pop r4
830: 3f 90 pop r3
832: 2f 90 pop r2
834: 08 95 ret
00000836 <write>:
BYTE asciiString[11];
void write(unsigned char *str)
{
836: fc 01 movw r30, r24
while (*str != 0)
{
UART1_WAIT_AND_SEND(*str++);
838: 80 81 ld r24, Z
83a: 88 23 and r24, r24
83c: 69 f0 breq .+26 ; 0x858 <write+0x22>
83e: 80 91 9b 00 lds r24, 0x009B
842: 85 ff sbrs r24, 5
844: fc cf rjmp .-8 ; 0x83e <write+0x8>
846: 80 91 9b 00 lds r24, 0x009B
84a: 8f 7d andi r24, 0xDF ; 223
84c: 80 93 9b 00 sts 0x009B, r24
850: 81 91 ld r24, Z+
852: 80 93 9c 00 sts 0x009C, r24
856: f0 cf rjmp .-32 ; 0x838 <write+0x2>
858: 08 95 ret
0000085a <writeln>:
}
}
void writeln(unsigned char *str)
{
write(str);
85a: 0e 94 1b 04 call 0x836 <write>
write("\n\r");
85e: 87 e4 ldi r24, 0x47 ; 71
860: 93 e0 ldi r25, 0x03 ; 3
862: 0e 94 1b 04 call 0x836 <write>
866: 08 95 ret
00000868 <intToAscii>:
}
void sysInit(void);
int main(void)
{ UINT32 i;
UINT32 packetsReceived = 0;
UINT8 length;
BOOL flag=0;
BOOL flag1=0;
BYTE choice;
UINT8 (*p)[13];
UINT16 n1,n2,n3;
for (i=0;i<100;i++) Wait(200);
//系统初始化
sysInit();
//一些提示信息
writeln("Welcome to IBSS");
writeln("This is written by Wang Chaoyan");
writeln("This is a Simple Demo RX for CCxx00...");
// Reset CCxx00 and write rf setting to config registers
// CC1100芯片上电复位
TI_CC_PowerupResetCCxxx0();
//寄存器设置
TI_CC_RfWriteRfSettings(&rfSettings);
//提示信息
writeln("Now Enjoying the show!!!");
Motion_Init();
while(1)
{
//初始化接收的数据包长度
length = sizeof(rxBuffer);
//若收到显示接收结果
flag=TI_CC_RfReceivePacket(rxBuffer, length);
if (flag)
{
SET_LED_RDY();
intToAscii(++packetsReceived);
write("Received: ");
write(" - ");
write(asciiString);
CLR_LED_RDY();
for (i=0;i<200;i++) Wait(200);
TI_CC_RfSendPacket(txBuffer, sizeof(txBuffer));
choice=rxBuffer[0];
switch(choice)
{
case 0x01: p=angle1;n1=17;n2=9;n3=10;flag1=1;break;
case 0x02: p=angle2;n1=11;n2=3;n3=10;flag1=1;break;
case 0x03: p=angle3; n1=6; n2=2;n3=10;flag1=1;break;
case 0x04: p=angle4; n1=7; n2=2;n3=10;flag1=1;break;
}
if(flag1)
{ Motion_Init();
Motion_Excute(p,n1,n2,n3);
Motion_Init();
flag1=0;
}
}
}
}
void Port_Init(void)
{
MCUCR=0x00;
XDIV=0x00;
XMCRA=0x00;
PA_INIT;
PB_INIT;
PC_INIT;
PD_INIT;
}
void Timer1_Setup(void)
{ TCCR1A=0x00;
TCNT1=0x00;
}
void sysInit(void)
{
unsigned char i;
//口初始化
Port_Init();
//SPI 初始化
Spi_Setup();
Timer1_Setup();
//等待一下,晶振稳定
for (i=0;i<5;i++) Wait(200);
//初始化串口为: 9600,8N1
INIT_UART1 ( UART_BAUDRATE_9K6, (
UART_OPT_8_BITS_PER_CHAR |
UART_OPT_NO_PARITY |
UART_OPT_ONE_STOP_BIT ) );
//串口开
ENABLE_UART1();
DISABLE_UART1_INT();
CLR_LED_RDY();
}
//-------------------------------------------------------------------------------------------------------
// void intToAscii(UINT32 value)
//
// DESCRIPTION:
// Takes a 32 bits interger as input and converts it to ascii. Puts the result in the global
// variable asciiString[]
//
// ARGUMENTS:
// UINT32 value
// The value to be converted
//-------------------------------------------------------------------------------------------------------
void intToAscii(UINT32 value) {
868: 7f 92 push r7
86a: 8f 92 push r8
86c: 9f 92 push r9
86e: af 92 push r10
870: bf 92 push r11
872: cf 92 push r12
874: df 92 push r13
876: ef 92 push r14
878: ff 92 push r15
87a: 0f 93 push r16
87c: 1f 93 push r17
87e: cf 93 push r28
880: df 93 push r29
882: 7b 01 movw r14, r22
884: 8c 01 movw r16, r24
UINT8 i;
UINT8 j = 0;
886: 99 24 eor r9, r9
UINT8 digit_start = 0;
888: 79 2c mov r7, r9
UINT16 digit = 0;
UINT32 denom = 1000000000;
88a: a1 2c mov r10, r1
88c: aa ec ldi r26, 0xCA ; 202
88e: ba 2e mov r11, r26
890: aa e9 ldi r26, 0x9A ; 154
892: ca 2e mov r12, r26
894: ab e3 ldi r26, 0x3B ; 59
896: da 2e mov r13, r26
if (value == 0) {
898: 61 15 cp r22, r1
89a: 71 05 cpc r23, r1
89c: 81 05 cpc r24, r1
89e: 91 05 cpc r25, r1
8a0: 31 f4 brne .+12 ; 0x8ae <intToAscii+0x46>
asciiString[0] = '0';
8a2: 80 e3 ldi r24, 0x30 ; 48
8a4: 80 93 cc 03 sts 0x03CC, r24
asciiString[1] = NULL;
8a8: 90 92 cd 03 sts 0x03CD, r9
8ac: 33 c0 rjmp .+102 ; 0x914 <intToAscii+0xac>
} else {
for(i = 10; i > 0; i--) {
8ae: fa e0 ldi r31, 0x0A ; 10
8b0: 8f 2e mov r8, r31
digit = value / denom;
8b2: c8 01 movw r24, r16
8b4: b7 01 movw r22, r14
8b6: a6 01 movw r20, r12
8b8: 95 01 movw r18, r10
8ba: 0e 94 91 05 call 0xb22 <__udivmodsi4>
8be: e9 01 movw r28, r18
if((digit_start == 1) || (digit != 0)) {
8c0: 81 e0 ldi r24, 0x01 ; 1
8c2: 78 16 cp r7, r24
8c4: 11 f0 breq .+4 ; 0x8ca <intToAscii+0x62>
8c6: 23 2b or r18, r19
8c8: a1 f0 breq .+40 ; 0x8f2 <intToAscii+0x8a>
digit_start = 1;
8ca: e1 e0 ldi r30, 0x01 ; 1
8cc: 7e 2e mov r7, r30
value %= denom;
8ce: c8 01 movw r24, r16
8d0: b7 01 movw r22, r14
8d2: a6 01 movw r20, r12
8d4: 95 01 movw r18, r10
8d6: 0e 94 91 05 call 0xb22 <__udivmodsi4>
8da: dc 01 movw r26, r24
8dc: cb 01 movw r24, r22
8de: 7c 01 movw r14, r24
8e0: 8d 01 movw r16, r26
asciiString[j++] = (digit + '0');
8e2: e9 2d mov r30, r9
8e4: ff 27 eor r31, r31
8e6: e4 53 subi r30, 0x34 ; 52
8e8: fc 4f sbci r31, 0xFC ; 252
8ea: 8c 2f mov r24, r28
8ec: 80 5d subi r24, 0xD0 ; 208
8ee: 80 83 st Z, r24
8f0: 97 0c add r9, r7
}
denom /= 10;
8f2: c6 01 movw r24, r12
8f4: b5 01 movw r22, r10
8f6: 2a e0 ldi r18, 0x0A ; 10
8f8: 30 e0 ldi r19, 0x00 ; 0
8fa: 40 e0 ldi r20, 0x00 ; 0
8fc: 50 e0 ldi r21, 0x00 ; 0
8fe: 0e 94 91 05 call 0xb22 <__udivmodsi4>
902: 59 01 movw r10, r18
904: 6a 01 movw r12, r20
906: 8a 94 dec r8
908: a1 f6 brne .-88 ; 0x8b2 <intToAscii+0x4a>
}
asciiString[j++] = NULL;
90a: e9 2d mov r30, r9
90c: ff 27 eor r31, r31
90e: e4 53 subi r30, 0x34 ; 52
910: fc 4f sbci r31, 0xFC ; 252
912: 80 82 st Z, r8
914: df 91 pop r29
916: cf 91 pop r28
918: 1f 91 pop r17
91a: 0f 91 pop r16
91c: ff 90 pop r15
91e: ef 90 pop r14
920: df 90 pop r13
922: cf 90 pop r12
924: bf 90 pop r11
926: af 90 pop r10
928: 9f 90 pop r9
92a: 8f 90 pop r8
92c: 7f 90 pop r7
92e: 08 95 ret
00000930 <Port_Init>:
930: 15 be out 0x35, r1 ; 53
932: 1c be out 0x3c, r1 ; 60
934: 10 92 6d 00 sts 0x006D, r1
938: 9f ef ldi r25, 0xFF ; 255
93a: 9a bb out 0x1a, r25 ; 26
93c: 1b ba out 0x1b, r1 ; 27
93e: 87 e0 ldi r24, 0x07 ; 7
940: 87 bb out 0x17, r24 ; 23
942: 8f e3 ldi r24, 0x3F ; 63
944: 88 bb out 0x18, r24 ; 24
946: 94 bb out 0x14, r25 ; 20
948: 15 ba out 0x15, r1 ; 21
94a: 88 e8 ldi r24, 0x88 ; 136
94c: 81 bb out 0x11, r24 ; 17
94e: 8f e7 ldi r24, 0x7F ; 127
950: 82 bb out 0x12, r24 ; 18
952: 08 95 ret
00000954 <Timer1_Setup>:
954: 1f bc out 0x2f, r1 ; 47
956: 1d bc out 0x2d, r1 ; 45
958: 1c bc out 0x2c, r1 ; 44
95a: 08 95 ret
0000095c <sysInit>:
95c: cf 93 push r28
95e: 0e 94 98 04 call 0x930 <Port_Init>
962: 0e 94 6c 00 call 0xd8 <Spi_Setup>
966: 0e 94 aa 04 call 0x954 <Timer1_Setup>
96a: c4 e0 ldi r28, 0x04 ; 4
96c: 88 ec ldi r24, 0xC8 ; 200
96e: 0e 94 65 00 call 0xca <Wait>
972: c1 50 subi r28, 0x01 ; 1
974: c7 ff sbrs r28, 7
976: fa cf rjmp .-12 ; 0x96c <sysInit+0x10>
978: 10 92 98 00 sts 0x0098, r1
97c: 83 e3 ldi r24, 0x33 ; 51
97e: 80 93 99 00 sts 0x0099, r24
982: 86 e8 ldi r24, 0x86 ; 134
984: 80 93 9d 00 sts 0x009D, r24
988: 80 91 9a 00 lds r24, 0x009A
98c: 88 61 ori r24, 0x18 ; 24
98e: 80 93 9a 00 sts 0x009A, r24
992: 80 91 9a 00 lds r24, 0x009A
996: 8f 75 andi r24, 0x5F ; 95
998: 80 93 9a 00 sts 0x009A, r24
99c: 97 98 cbi 0x12, 7 ; 18
99e: cf 91 pop r28
9a0: 08 95 ret
000009a2 <main>:
9a2: cf ef ldi r28, 0xFF ; 255
9a4: d0 e1 ldi r29, 0x10 ; 16
9a6: de bf o
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -