加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C51学习(1):库的加载<reg51.h>,<intrins.h>

(2009-12-31 07:10:28)
标签:

杂谈

    欢迎大家来到我的博客,最近开始学习C51了,最终目的是向ARM进军。大家和我一起努力吧!C51学习(1):库的加载<reg51.h>,<intrins.h>

    这是我学习的第一个程序,流水灯。简单吧,大家别笑我就好了。

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
void main()
{
 while(1) 
   { uchar temp,i,j;
 for(j=0;j<3;j++)
 {
  P1=0x55;
  delay(300);
  P1=0xaa;
  delay(300);
 }
 P1=0xff;
 for(j=0;j<3;j++)
 {
  temp=0xfe;
  for(i=0;i<8;i++)
  {
   P1=temp;
   delay(300);
   temp=_crol_(temp,1);
  }
 
 }
 P1=0xff;
 for(j=0;j<3;j++)
 {
  P1=0x7e;
  delay(300);
  P1=0xbd;
  delay(300);
  P1=0xdb;
  delay(300);
  P1=0xe7;
  delay(300);
 }
 P1=0xff;
 for(j=0;j<3;j++)
 {
  P1=0xe7;
  delay(300);
  P1=0xdb;
  delay(300);
  P1=0xbd;
  delay(300);
  P1=0x7e;
  delay(300);
  
 }
 P1=0xff;
 for(j=0;j<3;j++)
 {
  P1=~P1;
  delay(300);
 
 }
 P1=0xff;
 
}
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);

}

    程序很简单啦,利用反复循环达到延时的目的,然后重复设定P1口,点亮不同的LED!

    其中reg51.h 是定义芯片的头文件,包含芯片内部寄存器等定义,
    intrins.h 是包含几个运算函数的头文件,如果不用到其中的函数就可以不用定义它,包含的函数有:_crol_ 字符循环左移 
_cror_ 字符循环右移 
_irol_ 整数循环左移 
_iror_ 整数循环右移 
_lrol_ 长整数循环左移 
_lror_ 长整数循环右移 
_nop_ 空操作8051 NOP 指令 
_testbit_ 测试并清零位8051 JBC 指令

下次上传烧好的片片给大家看。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有