📄 sccb.txt
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--debug -c --asm --interleave -o.\OBJ\sccb.o --depend=.\OBJ\sccb.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\Demo -I.\HARDWARE\EXTI -I.\HARDWARE\KEY -I.\HARDWARE\LCD -I.\HARDWARE\LED -I.\HARDWARE\TIMER -I.\HARDWARE\WDG -I.\SYSTEM\delay -I.\SYSTEM\sys -I.\SYSTEM\usart -I.\USER -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\OBJ\sccb.crf USER\SCCB.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
InitSCCB PROC
;;;19 */
;;;20 void InitSCCB(void)
000000 48b4 LDR r0,|L1.724|
;;;21 {
;;;22 //SCCB_DDR|=(1<<SCCB_SIO_C)|(1<<SCCB_SIO_D);
;;;23 //SCCB_PORT|=(1<<SCCB_SIO_C)|(1<<SCCB_SIO_D);
;;;24 RCC->APB2ENR |= (1 <<3 );
000002 6980 LDR r0,[r0,#0x18]
000004 f0400008 ORR r0,r0,#8
000008 49b2 LDR r1,|L1.724|
00000a 6188 STR r0,[r1,#0x18]
;;;25 GPIOB->CRL &= 0x00ffffff;
00000c 48b2 LDR r0,|L1.728|
00000e 6800 LDR r0,[r0,#0]
000010 f020407f BIC r0,r0,#0xff000000
000014 49b1 LDR r1,|L1.732|
000016 f8c10c00 STR r0,[r1,#0xc00]
;;;26 GPIOB->CRL |= 0x33000000;
00001a 4608 MOV r0,r1
00001c f8d00c00 LDR r0,[r0,#0xc00]
000020 f040504c ORR r0,r0,#0x33000000
000024 f8c10c00 STR r0,[r1,#0xc00]
;;;27 GPIOB->ODR |= 0x00C0;
000028 4608 MOV r0,r1
00002a f8d00c0c LDR r0,[r0,#0xc0c]
00002e f04000c0 ORR r0,r0,#0xc0
000032 f8c10c0c STR r0,[r1,#0xc0c]
;;;28
;;;29 }
000036 4770 BX lr
;;;30 /*
ENDP
startSCCB PROC
;;;36 */
;;;37 void startSCCB(void)
000038 b510 PUSH {r4,lr}
;;;38 {
;;;39 SIO_D_SET; //数据线高电平
00003a 48a9 LDR r0,|L1.736|
00003c 6800 LDR r0,[r0,#0]
00003e f0400080 ORR r0,r0,#0x80
000042 49a6 LDR r1,|L1.732|
000044 f8c10c0c STR r0,[r1,#0xc0c]
;;;40 Delay_nUS(200);
000048 f04f00c8 MOV r0,#0xc8
00004c f7fffffe BL delay_us
;;;41
;;;42 SIO_C_SET; //在时钟线高的时候数据线由高至低
000050 48a2 LDR r0,|L1.732|
000052 f8d00c0c LDR r0,[r0,#0xc0c]
000056 f0400040 ORR r0,r0,#0x40
00005a 49a0 LDR r1,|L1.732|
00005c f8c10c0c STR r0,[r1,#0xc0c]
;;;43 Delay_nUS(200);
000060 20c8 MOVS r0,#0xc8
000062 f7fffffe BL delay_us
;;;44
;;;45 SIO_D_CLR;
000066 489d LDR r0,|L1.732|
000068 f8d00c0c LDR r0,[r0,#0xc0c]
00006c f0200080 BIC r0,r0,#0x80
000070 499b LDR r1,|L1.736|
000072 6008 STR r0,[r1,#0]
;;;46 Delay_nUS(200);
000074 f04f00c8 MOV r0,#0xc8
000078 f7fffffe BL delay_us
;;;47
;;;48 SIO_C_CLR; //数据线恢复低电平,单操作函数必要
00007c 4897 LDR r0,|L1.732|
00007e f8d00c0c LDR r0,[r0,#0xc0c]
000082 f0200040 BIC r0,r0,#0x40
000086 4995 LDR r1,|L1.732|
000088 f8c10c0c STR r0,[r1,#0xc0c]
;;;49 Delay_nUS(200);
00008c 20c8 MOVS r0,#0xc8
00008e f7fffffe BL delay_us
;;;50
;;;51
;;;52 }
000092 bd10 POP {r4,pc}
;;;53 /*
ENDP
stopSCCB PROC
;;;59 */
;;;60 void stopSCCB(void)
000094 b510 PUSH {r4,lr}
;;;61 {
;;;62 SIO_D_CLR;
000096 4892 LDR r0,|L1.736|
000098 6800 LDR r0,[r0,#0]
00009a f0200080 BIC r0,r0,#0x80
00009e 498f LDR r1,|L1.732|
0000a0 f8c10c0c STR r0,[r1,#0xc0c]
;;;63 Delay_nUS(200);
0000a4 f04f00c8 MOV r0,#0xc8
0000a8 f7fffffe BL delay_us
;;;64
;;;65 SIO_C_SET;
0000ac 488b LDR r0,|L1.732|
0000ae f8d00c0c LDR r0,[r0,#0xc0c]
0000b2 f0400040 ORR r0,r0,#0x40
0000b6 4989 LDR r1,|L1.732|
0000b8 f8c10c0c STR r0,[r1,#0xc0c]
;;;66 Delay_nUS(200);
0000bc 20c8 MOVS r0,#0xc8
0000be f7fffffe BL delay_us
;;;67
;;;68
;;;69 SIO_D_SET;
0000c2 4886 LDR r0,|L1.732|
0000c4 f8d00c0c LDR r0,[r0,#0xc0c]
0000c8 f0400080 ORR r0,r0,#0x80
0000cc 4983 LDR r1,|L1.732|
0000ce f8c10c0c STR r0,[r1,#0xc0c]
;;;70 Delay_nUS(200);
0000d2 20c8 MOVS r0,#0xc8
0000d4 f7fffffe BL delay_us
;;;71 // SCCB_DDR&= ~(SCCB_SIO_D);
;;;72
;;;73 }
0000d8 bd10 POP {r4,pc}
;;;74
ENDP
noAck PROC
;;;81 */
;;;82 void noAck(void)
0000da b510 PUSH {r4,lr}
;;;83 {
;;;84
;;;85 SIO_D_SET;
0000dc 4880 LDR r0,|L1.736|
0000de 6800 LDR r0,[r0,#0]
0000e0 f0400080 ORR r0,r0,#0x80
0000e4 497d LDR r1,|L1.732|
0000e6 f8c10c0c STR r0,[r1,#0xc0c]
;;;86 Delay_nUS(200);
0000ea f04f00c8 MOV r0,#0xc8
0000ee f7fffffe BL delay_us
;;;87
;;;88 SIO_C_SET;
0000f2 487a LDR r0,|L1.732|
0000f4 f8d00c0c LDR r0,[r0,#0xc0c]
0000f8 f0400040 ORR r0,r0,#0x40
0000fc 4977 LDR r1,|L1.732|
0000fe f8c10c0c STR r0,[r1,#0xc0c]
;;;89 Delay_nUS(200);
000102 20c8 MOVS r0,#0xc8
000104 f7fffffe BL delay_us
;;;90
;;;91 SIO_C_CLR;
000108 4874 LDR r0,|L1.732|
00010a f8d00c0c LDR r0,[r0,#0xc0c]
00010e f0200040 BIC r0,r0,#0x40
000112 4973 LDR r1,|L1.736|
000114 6008 STR r0,[r1,#0]
;;;92 Delay_nUS(200);
000116 f04f00c8 MOV r0,#0xc8
00011a f7fffffe BL delay_us
;;;93
;;;94 SIO_D_CLR;
00011e 486f LDR r0,|L1.732|
000120 f8d00c0c LDR r0,[r0,#0xc0c]
000124 f0200080 BIC r0,r0,#0x80
000128 496c LDR r1,|L1.732|
00012a f8c10c0c STR r0,[r1,#0xc0c]
;;;95 Delay_nUS(200);
00012e 20c8 MOVS r0,#0xc8
000130 f7fffffe BL delay_us
;;;96
;;;97 }
000134 bd10 POP {r4,pc}
;;;98
ENDP
SCCBwriteByte PROC
;;;105 */
;;;106 uchar SCCBwriteByte(uchar m_data)
000136 b570 PUSH {r4-r6,lr}
;;;107 {
000138 4606 MOV r6,r0
;;;108 unsigned char j,tem;
;;;109
;;;110 for(j=0;j<8;j++) //循环8次发送数据
00013a 2400 MOVS r4,#0
00013c e02e B |L1.412|
|L1.318|
;;;111 {
;;;112 if((m_data<<j)&0x80)
00013e fa06f004 LSL r0,r6,r4
000142 f0100f80 TST r0,#0x80
000146 d007 BEQ |L1.344|
;;;113 {
;;;114 SIO_D_SET;
000148 4865 LDR r0,|L1.736|
00014a 6800 LDR r0,[r0,#0]
00014c f0400080 ORR r0,r0,#0x80
000150 4962 LDR r1,|L1.732|
000152 f8c10c0c STR r0,[r1,#0xc0c]
000156 e006 B |L1.358|
|L1.344|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -