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

📄 cnc2119.txt

📁 基于ARM7与CAN总线的加工中心面板控制系统软件。选用ARM单片机且带CAN接口的lpc2119芯片
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000b10  e5c10004          STRB     r0,[r1,#4]
000b14  e5c1500c          STRB     r5,[r1,#0xc]
000b18  e3a00000          MOV      r0,#0
000b1c  e5000ff4          STR      r0,[r0,#-0xff4]
000b20  e3a00026          MOV      r0,#0x26
000b24  e3a01000          MOV      r1,#0
000b28  e5010dfc          STR      r0,[r1,#-0xdfc]
000b2c  e24f0e6f          ADR      r0,|L1.1092|
000b30  e5010efc          STR      r0,[r1,#-0xefc]
000b34  e3a00000          MOV      r0,#0
000b38  e5100ff0          LDR      r0,[r0,#-0xff0]
000b3c  e3800040          ORR      r0,r0,#0x40
000b40  e5010ff0          STR      r0,[r1,#-0xff0]
000b44  e3a00001          MOV      r0,#1
000b48  eaffffba          B        |L1.2616|
;;;413    		uint32  bak;
;;;414    		PINSEL0|=0X00000005;
;;;415    	
;;;416    		//参数过滤
;;;417    		if((0==baud)||(baud<115200))
;;;418    			return(0);
;;;419    		if((set.datab<5)||(set.datab>8))
;;;420    			return(0);
;;;421    		if((0==set.stopb)||(set.stopb>2))
;;;422    			return(0);
;;;423    		if(set.parity>4)
;;;424    			return(0);
;;;425    		//设置串口波特率
;;;426    		U0LCR=0x80;																	//DLAB位置1
;;;427    		bak=(Fpclk>>4)/baud;
;;;428    		U0DLM=bak>>8;
;;;429    		U0DLL=bak&0xff;
;;;430    		//设置串口模式
;;;431    		bak=set.datab-5;															//设置字长度
;;;432    		if(2==set.stopb)
;;;433    			bak|=0x04;																//判断是否为2位停止位
;;;434    		if(0!=set.parity)
;;;435    			{
;;;436    				set.parity=set.parity-1;
;;;437    				bak|=0x08;
;;;438    			}
;;;439    		bak|=set.parity<<4;														//设置奇偶校验
;;;440    		U0FCR=0x81;
;;;441    		U0IER=0X01;
;;;442    		U0LCR=bak;
;;;443    		VICIntSelect=0x00000000;
;;;444    		VICVectCntl1=0x26;
;;;445    		VICVectAddr1=(int)IRQ_UART0;
;;;446    		VICIntEnable|=0x00000040;
;;;447    		return(1);
;;;448    
;;;449    
;;;450    	}
                          ENDP

                  IRQ_Eint0 PROC
;;;656    void  IRQ_Eint0(void) __irq
;;;657    	{	//下面尜加键值处理
000b4c  e92d503f          PUSH     {r0-r5,r12,lr}
000b50  e59f0210          LDR      r0,|L1.3432|
000b54  e5d00000          LDRB     r0,[r0,#0]  ; nled
000b58  ebfffffe          BL       CH452I2CWrByte
000b5c  ebfffffe          BL       CH452I2CRead
000b60  e1a04000          MOV      r4,r0
000b64  e1a00004          MOV      r0,r4
000b68  ebfffffe          BL       KeyDone
000b6c  e1a05000          MOV      r5,r0
000b70  e1a00005          MOV      r0,r5
000b74  ebfffffe          BL       SendData
000b78  e1a00005          MOV      r0,r5
000b7c  ebfffffe          BL       ISendBuf
000b80  ea000002          B        |L1.2960|
                  |L1.2948|
000b84  e3a00001          MOV      r0,#1
000b88  e59f11c4          LDR      r1,|L1.3412|
000b8c  e5c10140          STRB     r0,[r1,#0x140]
                  |L1.2960|
000b90  e59f01bc          LDR      r0,|L1.3412|
000b94  e5d00140          LDRB     r0,[r0,#0x140]
000b98  e3100001          TST      r0,#1
000b9c  1afffff8          BNE      |L1.2948|
000ba0  e3a00000          MOV      r0,#0
000ba4  e5000fd0          STR      r0,[r0,#-0xfd0]
000ba8  e8bd503f          POP      {r0-r5,r12,lr}
000bac  e25ef004          SUBS     pc,lr,#4
;;;658    		uint8	data;
;;;659    		uint32 dat;
;;;660    		CH452I2CWrByte(nled);												//相应按键的LED灯亮
;;;661    		data=CH452I2CRead();
;;;662    		dat=KeyDone(data);
;;;663    		SendData(dat);
;;;664        ISendBuf(dat);		
;;;665    		while((EXTINT&0x01)!=0)													//等待外部中断信号恢复为高电平
;;;666    		EXTINT=0x01;															//清除EINTO中断标志
;;;667    		VICVectAddr=0;																//向量中断结束
;;;668    	}
                          ENDP

                  sendmake PROC
;;;675    void sendmake(uint16 make_code)							//通码,按键按下,或持续按住
;;;676    	{
000bb0  e92d4010          PUSH     {r4,lr}
000bb4  e1a04000          MOV      r4,r0
000bb8  e1a00004          MOV      r0,r4
000bbc  ebfffffe          BL       SendData
000bc0  e1a00004          MOV      r0,r4
000bc4  ebfffffe          BL       ISendBuf
000bc8  e8bd4010          POP      {r4,lr}
000bcc  e12fff1e          BX       lr
;;;677    			
;;;678    		SendData(make_code);	//直接发低8位
;;;679        ISendBuf(make_code);
;;;680    									
;;;681    	}
                          ENDP

                  sendbreak PROC
;;;688    void sendbreak(uint16 make_code)				//断码,按键释放
;;;689    	{
000bd0  e92d4070          PUSH     {r4-r6,lr}
000bd4  e1a04000          MOV      r4,r0
000bd8  e3a05000          MOV      r5,#0
000bdc  e3a06000          MOV      r6,#0
000be0  ea000015          B        |L1.3132|
                  |L1.3044|
000be4  e3a05000          MOV      r5,#0
000be8  e2860001          ADD      r0,r6,#1
000bec  e20060ff          AND      r6,r0,#0xff
000bf0  e3a000f0          MOV      r0,#0xf0
000bf4  ebfffffe          BL       SendData
000bf8  e0800005          ADD      r0,r0,r5
000bfc  e20050ff          AND      r5,r0,#0xff
000c00  e1a00004          MOV      r0,r4
000c04  ebfffffe          BL       SendData
000c08  e0800005          ADD      r0,r0,r5
000c0c  e20050ff          AND      r5,r0,#0xff
000c10  e3a000f0          MOV      r0,#0xf0
000c14  ebfffffe          BL       ISendBuf
000c18  e0800005          ADD      r0,r0,r5
000c1c  e20050ff          AND      r5,r0,#0xff
000c20  e1a00004          MOV      r0,r4
000c24  ebfffffe          BL       ISendBuf
000c28  e0800005          ADD      r0,r0,r5
000c2c  e20050ff          AND      r5,r0,#0xff
000c30  e3560005          CMP      r6,#5
000c34  1a000000          BNE      |L1.3132|
000c38  ea000001          B        |L1.3140|
                  |L1.3132|
000c3c  e3550008          CMP      r5,#8
000c40  1affffe7          BNE      |L1.3044|
                  |L1.3140|
000c44  e1a00000          MOV      r0,r0
000c48  e8bd4070          POP      {r4-r6,lr}
000c4c  e12fff1e          BX       lr
;;;690    		uint8 sendsucc=0;					  //存储返回值
;;;691    		uint8 t=0;										//记次数
;;;692    		while(sendsucc!=0x08)							//判断是否发送成功,没有则继续发送断码
;;;693    			{	                                      				
;;;694    				sendsucc = 0;
;;;695    				t++;
;;;696    				sendsucc+=SendData(0xf0);				//发送断码0xf0
;;;697    				sendsucc+=SendData(make_code);			//直接发送
;;;698            sendsucc+=ISendBuf(0xf0);
;;;699            sendsucc+=ISendBuf(make_code);
;;;700    				if(t==5)						          	//防止一直没有成功发送断码,产生死循环
;;;701              break;	
;;;702    			}
;;;703    	}
                          ENDP

                  Reset PROC
;;;713    
;;;714    	}
000c50  e12fff1e          BX       lr
                          ENDP

                  main PROC
;;;722    int main(void)
;;;723    	{
000c54  e92d4008          PUSH     {r3,lr}
000c58  e3a00008          MOV      r0,#8
000c5c  e59f1118          LDR      r1,|L1.3452|
000c60  e5c10000          STRB     r0,[r1,#0]  ; uart0_set
000c64  e3a00001          MOV      r0,#1
000c68  e5c10001          STRB     r0,[r1,#1]  ; uart0_set
000c6c  e3a00000          MOV      r0,#0
000c70  e5c10002          STRB     r0,[r1,#2]  ; uart0_set
000c74  ebfffffe          BL       Reset
000c78  e59f10f0          LDR      r1,|L1.3440|
000c7c  e5810000          STR      r0,[r1,#0]
000c80  e5810004          STR      r0,[r1,#4]
000c84  e59f10d4          LDR      r1,|L1.3424|
000c88  e5c10000          STRB     r0,[r1,#0]  ; rcv_new
000c8c  e3a02003          MOV      r2,#3
000c90  e59f10e4          LDR      r1,|L1.3452|
000c94  e1a0000d          MOV      r0,sp
000c98  ebfffffe          BL       __aeabi_memcpy
000c9c  e59d1000          LDR      r1,[sp,#0]
000ca0  e59f00cc          LDR      r0,|L1.3444|
000ca4  ebfffffe          BL       UART0_Ini
000ca8  ebfffffe          BL       CH452Init
000cac  ebfffffe          BL       InitCAN
000cb0  ea000020          B        |L1.3384|
                  |L1.3252|
000cb4  e1a00000          MOV      r0,r0
000cb8  e59f10c0          LDR      r1,|L1.3456|
000cbc  e1d100b0          LDRH     r0,[r1,#0]  ; IndeKey
000cc0  ebfffffe          BL       sendbreak
000cc4  e1a00000          MOV      r0,r0
000cc8  e59f10b0          LDR      r1,|L1.3456|
000ccc  e1d100b2          LDRH     r0,[r1,#2]  ; IndeKey
000cd0  ebfffffe          BL       sendbreak
000cd4  e1a00000          MOV      r0,r0
000cd8  e59f10a0          LDR      r1,|L1.3456|
000cdc  e1d100b4          LDRH     r0,[r1,#4]  ; IndeKey
000ce0  ebfffffe          BL       sendbreak
000ce4  e1a00000          MOV      r0,r0
000ce8  e59f1090          LDR      r1,|L1.3456|
000cec  e1d100b6          LDRH     r0,[r1,#6]  ; IndeKey
000cf0  ebfffffe          BL       sendbreak
000cf4  e1a00000          MOV      r0,r0
000cf8  e59f1080          LDR      r1,|L1.3456|
000cfc  e1d100b8          LDRH     r0,[r1,#8]  ; IndeKey
000d00  ebfffffe          BL       sendbreak
000d04  e1a00000          MOV      r0,r0
000d08  e59f1070          LDR      r1,|L1.3456|
000d0c  e1d100ba          LDRH     r0,[r1,#0xa]  ; IndeKey
000d10  ebfffffe          BL       sendbreak
000d14  e1a00000          MOV      r0,r0
000d18  e59f1060          LDR      r1,|L1.3456|
000d1c  e1d100bc          LDRH     r0,[r1,#0xc]  ; IndeKey
000d20  ebfffffe          BL       sendbreak
000d24  e1a00000          MOV      r0,r0
000d28  e59f1050          LDR      r1,|L1.3456|
000d2c  e1d100be          LDRH     r0,[r1,#0xe]  ; IndeKey
000d30  ebfffffe          BL       sendbreak
000d34  e1a00000          MOV      r0,r0
                  |L1.3384|
000d38  e1a00000          MOV      r0,r0
000d3c  eaffffdc          B        |L1.3252|
                  |L1.3392|
000d40  e0028000          DCD      0xe0028000
                  |L1.3396|
000d44  00000401          DCD      0x00000401
                  |L1.3400|
000d48  00000403          DCD      0x00000403
                  |L1.3404|
000d4c  e0044000          DCD      0xe0044000
                  |L1.3408|
000d50  00000000          DCD      val
                  |L1.3412|
000d54  e01fc000          DCD      0xe01fc000
                  |L1.3416|
000d58  e003c000          DCD      0xe003c000
                  |L1.3420|
000d5c  e000c000          DCD      0xe000c000
                  |L1.3424|
000d60  00000000          DCD      rcv_new
                  |L1.3428|
000d64  00000000          DCD      rcv_buf
                  |L1.3432|
000d68  00000000          DCD      nled
                  |L1.3436|
000d6c  00000000          DCD      keylist
                  |L1.3440|
000d70  e002c000          DCD      0xe002c000
                  |L1.3444|
000d74  0001c200          DCD      0x0001c200
                  |L1.3448|
000d78  000a8c00          DCD      0x000a8c00
                  |L1.3452|
000d7c  00000000          DCD      uart0_set
                  |L1.3456|
000d80  00000000          DCD      IndeKey
;;;724        uint8 i,j;
;;;725        uint16 p;
;;;726        uart0_set.datab=8;
;;;727    		uart0_set.stopb=1;
;;;728    		uart0_set.parity=0;
;;;729    		Reset();
;;;730        PINSEL0=0x00000000;
;;;731        PINSEL1=0x00000000;		
;;;732    		//IO0DIR=PINCON;
;;;733        //IO0SET=PINCON;
;;;734    		rcv_new=0;
;;;735    		UART0_Ini(115200,uart0_set);
;;;736    		CH452Init();	 
;;;737    		InitCAN();
;;;738    		while(1)
;;;739          {
;;;740            if(S_And==0)                   //如果+4按下,则发送通码,否则发送断码
;;;741              sendmake(IndeKey[0]);
;;;742            else
;;;743              sendbreak(IndeKey[0]);
;;;744            if(S_Sub==0)                   //如果-4按下,则发送通码,否则发送断码
;;;745              sendmake(IndeKey[1]);
;;;746            else
;;;747              sendbreak(IndeKey[1]);
;;;748            if(X_And==0)                   //如果+X按下,则发送通码,

⌨️ 快捷键说明

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