⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st7920.txt

📁 基于ARM的电梯控制程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 942] for uVision
; commandline ArmCC [--debug -c --asm --interleave -ost7920.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips ST7920.c]

                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  Delay PROC
;;;8      	int i;
;;;9        	for (i=n;i>0x00;i--);
000000  e1a01000          MOV      r1,r0
000004  ea000000          B        |L1.12|
                  |L1.8|
000008  e2411001          SUB      r1,r1,#1
                  |L1.12|
00000c  e3510000          CMP      r1,#0
000010  cafffffc          BGT      |L1.8|
000014  e12fff1e          BX       lr
;;;10     }
                          ENDP

                  SendByte PROC
;;;13     void SendByte(uint8 dat)               
;;;14     {
000018  e92d4010          PUSH     {r4,lr}
00001c  e1a03000          MOV      r3,r0
000020  e3a04000          MOV      r4,#0
000024  ea000012          B        |L1.116|
                  |L1.40|
000028  e3a00701          MOV      r0,#0x40000
00002c  e59f1330          LDR      r1,|L1.868|
000030  e581001c          STR      r0,[r1,#0x1c]
000034  e3130080          TST      r3,#0x80
000038  0a000002          BEQ      |L1.72|
00003c  e3a00802          MOV      r0,#0x20000
000040  e5810014          STR      r0,[r1,#0x14]
000044  ea000002          B        |L1.84|
                  |L1.72|
000048  e3a00802          MOV      r0,#0x20000
00004c  e59f1310          LDR      r1,|L1.868|
000050  e581001c          STR      r0,[r1,#0x1c]
                  |L1.84|
000054  e3a00005          MOV      r0,#5
000058  ebfffffe          BL       Delay
00005c  e3a00701          MOV      r0,#0x40000
000060  e59f12fc          LDR      r1,|L1.868|
000064  e5810014          STR      r0,[r1,#0x14]
000068  e1a00c83          LSL      r0,r3,#25
00006c  e1a03c20          LSR      r3,r0,#24
000070  e2844001          ADD      r4,r4,#1
                  |L1.116|
000074  e3540008          CMP      r4,#8
000078  baffffea          BLT      |L1.40|
00007c  e8bd4010          POP      {r4,lr}
000080  e12fff1e          BX       lr
;;;15      	int i;
;;;16      	for (i=0;i<8;i++)
;;;17         {
;;;18          	IO1CLR=ST7920_Clk;               //SCK=0
;;;19          	if((dat & 0x80)!=0)
;;;20          	IO1SET=ST7920_Sda;               //SID=1
;;;21          	else
;;;22          	IO1CLR=ST7920_Sda;               //SID=0
;;;23          	Delay(5);
;;;24     		IO1SET=ST7920_Clk;               //SCK=1;
;;;25          	dat = (dat<<1);
;;;26         }
;;;27     }
                          ENDP

                  SendCmd PROC
;;;30     	void SendCmd(uint8 dat)                
;;;31     {
000084  e92d4010          PUSH     {r4,lr}
000088  e1a04000          MOV      r4,r0
00008c  e3a000f8          MOV      r0,#0xf8
000090  ebfffffe          BL       SendByte
000094  e20400f0          AND      r0,r4,#0xf0
000098  ebfffffe          BL       SendByte
00009c  e3a010f0          MOV      r1,#0xf0
0000a0  e0010204          AND      r0,r1,r4,LSL #4
0000a4  ebfffffe          BL       SendByte
0000a8  e8bd4010          POP      {r4,lr}
0000ac  e12fff1e          BX       lr
;;;32      	SendByte(0xf8);
;;;33      	SendByte(dat & 0xf0);
;;;34      	SendByte((dat<<4)&0xf0);
;;;35     }
                          ENDP

                  SendDat PROC
;;;38     	void SendDat(uint8 dat)                
;;;39     {
0000b0  e92d4010          PUSH     {r4,lr}
0000b4  e1a04000          MOV      r4,r0
0000b8  e3a000fa          MOV      r0,#0xfa
0000bc  ebfffffe          BL       SendByte
0000c0  e20400f0          AND      r0,r4,#0xf0
0000c4  ebfffffe          BL       SendByte
0000c8  e3a010f0          MOV      r1,#0xf0
0000cc  e0010204          AND      r0,r1,r4,LSL #4
0000d0  ebfffffe          BL       SendByte
0000d4  e8bd4010          POP      {r4,lr}
0000d8  e12fff1e          BX       lr
;;;40      	SendByte(0xfa);
;;;41      	SendByte(dat & 0xf0);
;;;42      	SendByte((dat<<4)&0xf0);
;;;43     }
                          ENDP

                  DispChar PROC
;;;48     	void DispChar(uint8 x_addr, uint8 data)
;;;49     {   
0000dc  e92d4030          PUSH     {r4,r5,lr}
0000e0  e1a04000          MOV      r4,r0
0000e4  e1a05001          MOV      r5,r1
0000e8  e1a00004          MOV      r0,r4
0000ec  ebfffffe          BL       SendCmd
0000f0  e1a00005          MOV      r0,r5
0000f4  ebfffffe          BL       SendDat
0000f8  e8bd4030          POP      {r4,r5,lr}
0000fc  e12fff1e          BX       lr
;;;50     	SendCmd(x_addr);
;;;51     	SendDat(data);
;;;52     	
;;;53     }
                          ENDP

                  DispChars PROC
;;;60     	void DispChars(uint8 Addr,uint8 *p,uint8 Num)
;;;61     {   
000100  e92d40f0          PUSH     {r4-r7,lr}
000104  e1a07000          MOV      r7,r0
000108  e1a04001          MOV      r4,r1
00010c  e1a05002          MOV      r5,r2
000110  e1a00007          MOV      r0,r7
000114  ebfffffe          BL       SendCmd
000118  e3a06000          MOV      r6,#0
00011c  ea000003          B        |L1.304|
                  |L1.288|
000120  e7d40006          LDRB     r0,[r4,r6]
000124  ebfffffe          BL       SendDat
000128  e2860001          ADD      r0,r6,#1
00012c  e20060ff          AND      r6,r0,#0xff
                  |L1.304|
000130  e1560005          CMP      r6,r5
000134  bafffff9          BLT      |L1.288|
000138  e8bd40f0          POP      {r4-r7,lr}
00013c  e12fff1e          BX       lr
;;;62     	uint8 i;
;;;63     	SendCmd(Addr);
;;;64     	for(i=0;i<Num;i++)
;;;65     	SendDat(*(p+i));
;;;66     }
                          ENDP

                  Disp PROC
;;;68     void Disp(uint8 x_addr, uint8 *p)
;;;69     {   
000140  e92d40f0          PUSH     {r4-r7,lr}
000144  e1a04000          MOV      r4,r0
000148  e1a05001          MOV      r5,r1
00014c  e3a07000          MOV      r7,#0
000150  e1a00004          MOV      r0,r4
000154  ebfffffe          BL       SendCmd
000158  e3a06000          MOV      r6,#0
00015c  ea00000c          B        |L1.404|
                  |L1.352|
000160  e7d50006          LDRB     r0,[r5,r6]
000164  e3500000          CMP      r0,#0
000168  1a000000          BNE      |L1.368|
00016c  e3a07001          MOV      r7,#1
                  |L1.368|
000170  e3570000          CMP      r7,#0
000174  1a000002          BNE      |L1.388|
000178  e7d50006          LDRB     r0,[r5,r6]
00017c  ebfffffe          BL       SendDat
000180  ea000001          B        |L1.396|
                  |L1.388|
000184  e3a00020          MOV      r0,#0x20
000188  ebfffffe          BL       SendDat
                  |L1.396|
00018c  e2860001          ADD      r0,r6,#1
000190  e20060ff          AND      r6,r0,#0xff
                  |L1.404|
000194  e356000e          CMP      r6,#0xe
000198  bafffff0          BLT      |L1.352|
00019c  e8bd40f0          POP      {r4-r7,lr}
0001a0  e12fff1e          BX       lr
;;;70     	
;;;71     	uint8 i,flag=0;
;;;72     	SendCmd(x_addr);
;;;73     	for(i=0;i<14;i++)
;;;74     	{
;;;75     	if(*(p+i)=='\0')
;;;76     	flag=1;
;;;77     	if(flag==0)
;;;78     	SendDat((uint8)*(p+i));
;;;79     	else
;;;80     	SendDat(' ');
;;;81     	}
;;;82     	
;;;83     	
;;;84     }
                          ENDP

                  Display PROC
;;;90     void Display(uint8 x_add,uint8 high,uint8 low)
;;;91     {
0001a4  e92d4070          PUSH     {r4-r6,lr}
0001a8  e1a04000          MOV      r4,r0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -