历史上的今天
今天是:2024年10月23日(星期三)
2019年10月23日 | ARM基本知识
2019-10-23 来源:51hei
除了正常的保存之外,在编译无误后,选择另存为相同名称的.h文件,将点h文件中的main函数名称修改成其他名称,如xmain,或main1等,则新项目就可以调用原项目中的函数!
一、项目1先编写LCD1602,编译无错误后再将LCD1602.c另存为LCD1602.h,将LCD1602.h中的main()函数文件改为main0()
#include #include sbit rs=P2^0; sbit rw=P2^1; sbit e=P2^2; void delay(unsigned char us) { while(us--); } void w1602(bit r,unsigned char dat) { rs=r; rw=0; e=0; P1=dat; delay(3); e=1; delay(7); e=0; } void init1602() { w1602(0,0x38); w1602(0,0x06); w1602(0,0x0c); w1602(0,0x01); } void main() { char i; init1602(); w1602(0,0x80); for(i=0;i<10;i++) { w1602(1,0x30+i); } } 二、建立DS1302万年历项目DS1302 #include"reg52.h" #include"intrins.h" //注意上面项目作为头文件调入该项目 #include"LCD1602.h" sbit rst=P2^3; sbit sclk=P2^4; sbit Dio=P2^5; sbit A7=ACC^7; sbit B0=B^0; void w1302(unsigned char addr,dat) { char i; rst=0; sclk=0; rst=1; for(i=0;i<8;i++) { B=addr>>i; sclk=0; Dio=B0; sclk=1; } for(i=0;i<8;i++) { B=dat>>i; sclk=0; Dio=B0; sclk=1; } rst=0; } unsigned char r1302(unsigned char addr) { char i; rst=0; sclk=0; _nop_(); rst=1; for(i=0;i<8;i++) { B=addr>>i; sclk=0; Dio=B0; sclk=1; } for(i=0;i<8;i++) { A7=Dio; sclk=1; ACC=ACC>>1; sclk=0; } rst=0; return(ACC); } void main() { init1602(); //上以项目中的函数可以无条件调用 w1302(0x80,0x33); while(1) { w1602(0,0x80); w1602(1,0x30+((r1302(0x81)>>4) & 0x0f));//调用 w1602(1,0x30+(r1302(0x81) & 0x0f));//调用 } } 三、建立温度DS18B20程序项目 #include"reg52.h" #include"intrins.h" #include"LCD1602.h" sbit ds18b20=P2^6; unsigned char dd[]="date:"; unsigned char dd1[]="temp:"; unsigned char temp1,temp2,TT,ttT; bit Reset(void) { bit k; ds18b20=0; delay(145); ds18b20=1; delay(10); k=ds18b20; delay(90); return k; } //--------------------------- unsigned char ReadByte(void) { unsigned char j,buf=0; for(j=0;j<8;j++) { buf=buf>>1; ds18b20=0; _nop_(); _nop_(); ds18b20=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(ds18b20==1) buf|=0x80; delay(8); } return buf; } //------------------------------- void WriteByte(unsigned char dat) { unsigned char j; for(j=0;j<8;j++) { if(dat&0x01) { ds18b20=0; _nop_(); _nop_(); ds18b20=1; delay(10); } else { ds18b20=0; delay(10); ds18b20=1; _nop_(); _nop_(); } dat=dat>>1; } } //------------------ bit Convert(void) { if(Reset()==0) { WriteByte(0xcc); WriteByte(0x44); return 1; } else { return 0; } } //--------------------------------------- void ReadFlash(void) { unsigned char Lsb,Msb; if(Reset()==0) { WriteByte(0xcc); WriteByte(0xbe); Lsb=ReadByte(); Msb=ReadByte(); temp1=Lsb;//L 8bit temp2=Msb;//H 8bit } else { temp1=0; temp2=0; } } void disp_temp(unsigned char addr) { char i,m; if(Convert()==1) { ReadFlash(); TT=(temp2<<4)|(temp1>>4)&0x7F; if((TT & 0x80)==0x80) ttT=(~TT & 0x3F)+1; else ttT=TT; } m=20; while(m--) { w1602(0,addr); for(i=0;i<5;i++) w1602(1,dd1[i]); if((TT & 0x80)==0x80) //- { if(TT==0x80) { ttT=128; w1602(1,0x20); w1602(1,0X30+(ttT/100)); w1602(1,0x30+(ttT%100)/10); w1602(1,0x30+ttT%10); } else { w1602(1,0x20); w1602(1,0x2d); if(ttT/10>0) w1602(1,0x30+ttT/10); else w1602(1,0x20); w1602(1,0x30+ttT%10); } } else //+ { w1602(1,0x20); if(ttT/100>0) { w1602(1,0X30+(ttT/100)); w1602(1,0x30+(ttT%100)/10); w1602(1,0x30+(ttT%10)); } else { if((ttT%100)/10>0) { w1602(1,0x30+(ttT%100)/10); w1602(1,0x30+ttT%10); } else w1602(1,0x30+ttT%10); } } w1602(1,0x22); w1602(1,0x43); w1602(1,0x20); w1602(1,0x20); } } void main() { init1602(); while(1) { disp_temp(0xc3); } } 四、建立综合项目DS1302_18B20 #include"reg52.h" #include"intrins.h" #include"DS1302.h" sbit ds18b20=P2^6; unsigned char dd[]="date:"; unsigned char dd1[]="temp:"; unsigned char temp1,temp2,TT,ttT; bit Reset(void) { bit k; ds18b20=0; delay(145); ds18b20=1; delay(10); k=ds18b20; delay(90); return k; } //--------------------------- unsigned char ReadByte(void) { unsigned char j,buf=0; for(j=0;j<8;j++) { buf=buf>>1; ds18b20=0; _nop_(); _nop_(); ds18b20=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(ds18b20==1) buf|=0x80; delay(8); } return buf; } //------------------------------- void WriteByte(unsigned char dat) { unsigned char j; for(j=0;j<8;j++) { if(dat&0x01) { ds18b20=0; _nop_(); _nop_(); ds18b20=1; delay(10); } else { ds18b20=0; delay(10); ds18b20=1; _nop_();
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:03 编辑 文件为pdg格式,用超星阅读器就可以打开了 四个文件要全部下载到同一个文件夹下才能全部解压出来 … 查看全部问答> |
|
司新买了个普源的DS1052E,但商家送过来的时候已经拆封了 看起来是新的,商家也坚持是新的 怎么样才能知道是新的呢,听说有一个地方可以看开机次数!… 查看全部问答> |
|
首届“时代民芯”杯电子设计大赛评审专家对参赛作品进行了评审,评审采取设计报告评审和现场答辩及实物演示相结合的方式进行,最终评审出11项大奖。从即日起进入异议期。 评委名单: 中国半导体行业协会 秘书长 陈 贤 《单片机与嵌入式系统应用 ...… 查看全部问答> |
|
S3C2440的开发板,原带32M BYTE * 2 的内存。想扩大到64M BYTE * 2,请问哪家公司提供64M的SDRAM, 什么型号?SAMSUNG的SDRAM不想再用了… 查看全部问答> |
|
#include 我的project 里24C16.C、24C16.h、CS5532.C、cs5532.h、main.c五个文件,使用的是syncmos 的sm8958a 。其中在24C16.H里有#include ,在cs5532.h里也有#include ,现在我在main.c里有#include \"24c16.h\" 和 #include \"cs5532.h\",当我build main ...… 查看全部问答> |
|
前几天我在调试EKK-8962时,IDE为CCS4.2.4,在debug时出现如下的错误:CORTEX_M3_0: Error connecting to the target: The target board you are attempting to connect to does not appear to be a Stellaris IDK and is not supported with thi ...… 查看全部问答> |




