打印

单片机C51语言简明教程

[复制链接]
2580|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
浅滩浮云|  楼主 | 2007-11-23 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写在所有一切之前。
    程序是思维的一种表达方式,是一个人思维过程的体现!
    程序是用来完成某件事情的,所以最关键的是自己的头脑中要有清晰的解决某件事情的方法,而且这个方法是可以形成文字的,可以用第一步做什么,第二步做什么,第三步做什么。。。。。来表达出来。
而程序的具体实现是借助了不同的符号,所以有汇编语言,有C语言,有C51语言等等。而具体写程序的过程就是把上面的第一步,第二步等等步骤用具体的符号来表达的过程,也就是我们所说的语法。
C51语言的语法相对而言简单明了,现简单归纳,作为一个简明教程供同学们学习!

C51语言简明教程

一、常量
    (1)无符号单字节数
    (2)带符号单字节数
    (3)无符号双字节数
    (4)带符号双字节数
    (5)浮点数,占用4个字节

二、变量
    (1)无符号单字节数:unsigned char
    (2)带符号单字节数:char 
    (3)无符号双字节数:unsigned int
    (4)带符号双字节数:int
    (5)浮点数,占用4个字节:float
    (6)位变量:sbit
    (7)数组:  Arrary[ ][ ]
    (8)联合体:union
         union{
              int  i_Data;
              unsigned char b_Data[2];
  }u_int;
    (9)结构体:struct
struct Stu_Channel_Info{
    unsigned char Device_Info;   
    unsigned int  Device_ID;  
    unsigned int  Device_Time;  
}Channel_Info[con_MaxNumber];
    (10)指针:在C51语言中,我们尽量避免指针。


三、存储类型
    code:指放到程序存储器中,不可变得常数 比如:unsigned char code x
    data:指内部RAM低128字节空间 00~7FH比如:unsigned char data x 
    idata:指全部内部RAM空间00H~FFH。unsigned char idata x
    bdata:指放到可位寻址区域20H~2FH中 unsigned char bdata x
    pdata:指可用Ri寻址的区域,通常固定为外部RAM256字节   unsigend char pdata x
    xdata:指外部64KBRAM空间 unsiged char xdata x
四、关于运算符号
    +:加法运算
    -:减法运算
    *:乘法运算
    /:除法运算
    %:取余数
    <<:左移
    >>:右移
    =:等于
    &:与操作
    |:或操作
    ~:取反
    &&:逻辑与
    ||:逻辑或
五、关于位操作
   (1)口线位操作
    sbit Left_Red P1^0    表示用Left_Red来表示P1.0位
    Left_Red = 0则表示将P1.0清零   Left_Red = 1则表示将P1.0置位

   (2)位变量的操作方法
    unsigend char bdata Control_Port;     // 声明一个可位寻址的字节变量
    sbit     Output1 = Control_Port^1;   // 引用该字节变量的某一位
    sbit     Output2 = Control_Port^2;
    sbit     Output3 = Control_Port^3;
    则我们可以对Control_Port操作,也可以直接对其中定义好的位变量直接操作

六、关于外部端口的操作
    #define LED_Address XBYTE[0xC400]  固定LED_Address为0xC400地址
    读该端口的方法:x = LED_Address;
    写该端口的方法:LED_Address = x;  LED_Address = 0x33; LED_Address = Arr[5];

七、外部RAM区的操作
    unsigned char xdata Arr[20]; 表示声明了20个字节的外部RAM空间
    写方法:Arr[1] = 1; 
    读方法:x = Arr[1];
    unsigned char xdata Arr[20] _at_ 0x0000;  表示这20个外部RAM的起始地址为0x0000

八、普通函数的书写方法:
   void Delay( void ){  
  }
   void Output( unsigned char x ){
}

unsigned char Input( void ){
}

unsigned char Key_Disp( unsigned char *P ){
}


九、中断服务函数的写法:
   void p_Int0( void ) interrupt 0 using 0{
}
其中interrupt 0 表示第0号中断,即INT0中断
    using    0 表示中断服务程序中使用的工作组为0区。

十、常用语句
    if (   ){  }
    else    {  }

    for(  ;   ;   ; ) {   }

    while( ) {           }
 
    switch( ){
       case  :   break;
       case  :   barek;


       default:   break;
}

十一、书写规范
    x = x + 1;

    for( i = 1; i < 10; i++ ){
        j = Arr[5] + i;
    }

    void Delay_10ms( void ){

        unsigned char i;
        
        for( i = 0; i < 100; i++ ) { }



就总结这么多吧,同学们多从基础练习,编写程序是一件非常快乐的事情,希望同学们多细心体会!

相关帖子

沙发
wuljia| | 2007-11-23 15:00 | 只看该作者

不错,顶顶!

使用特权

评论回复
板凳
ayb_ice| | 2007-11-23 15:30 | 只看该作者

不错

使用特权

评论回复
地板
yongzai| | 2011-5-5 11:43 | 只看该作者
还可以

使用特权

评论回复
5
zjszjtk| | 2011-5-5 13:24 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝