控制工程师论坛

软件与程序

单片机C程序-入门

hewww88
hewww88

2008-09-21

单片机初始入门,我学的时后,走过很多弯路,其实,单片机用于

工业控制入门并不是我们想象的那样难.就是因为看书没人指

点,连如后这样简单的流程控制C程序都无处找,这里仅提供给

初学者,共同进步,象这样的简单入门,10天就够了,千万别放弃

哦,因为当初我也打算放弃,认为非常难.10天的路我确走了大

半年,希望走在更前面的朋有也多提供一些工控程序,互相学

习进步.   hewww88@163.com

/**************************************************************
;江华单片机
;作者:江华  
;outdisp1.c
;硬件:HE-DKB-1工控板(250元,17路输入,8路输出。10天教会使用于流程等控制,
;用途:代替PLC对手动改自动机台,流水线自动控制等,投资少作用大。
;芯片:宏晶STC89C52RC tel:15959652901
;功能:C语言写的流程状态转移
;s1即P0^0闭合;程序运行后,继电器依次吸合,同时,LED数码管依次显示7~0
;当然用在流程中加上延时调整,中间栽俳獿EDXX改为到位感测点一样哦,呵呵
;***************************************************************/
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char  //0-255 没有用到可省掉

sbit  Dat  =P3^1;  //可不要
sbit  Clk =P3^0;  //可不要
sbit  Cntr =P3^2;
sbit  s1 = P0^0;  // P大写s小写
sbit  s2 = P0^1; 
sbit  s3 = P0^2;
sbit  s4 = P0^3;
sbit  s5 = P0^4;
sbit  s6 = P0^5;
sbit  s7 = P0^6;
sbit  s8 = P0^7;

sbit  s9 = P0^0;  // P大写s小写
sbit  s10 = P2^1; 
sbit  s11 = P2^2;
sbit  s12 = P2^3;
sbit  s13 = P2^4;
sbit  s14 = P2^5;
sbit  s15 = P2^6;
sbit  s16 = P2^7;//(S17  计数T0怎么加入呢?)

sbit  LED1 = P1^7;
sbit  LED2 = P1^6;
sbit  LED3 = P1^5; 
sbit  LED4 = P1^4;
sbit  LED5 = P1^3;
sbit  LED6 = P1^2;
sbit  LED7 = P1^1;
sbit  LED8 = P1^0;

void mDelay(unsigned int Delay)  //延时子程序0-65535
{ unsigned char i;
 for(;Delay>0;Delay--)
 { for(i=0;i<159;i++)
  {;}     
 }
} //经精确调整后延时503us

void main ()
{
  P1 = 0x00;

  while (1)
  {
//---------------------------
  Cntr = 0;   
    _nop_ ();
    _nop_ ();
    _nop_ ();
    _nop_ ();
 if (s1= =0) {LED1 = 1;LED8 = 0;}  //此工控板1为输出。
  Cntr = 1;
    _nop_ ();
    _nop_ (); 
    _nop_ ();
    _nop_ ();
  mDelay(20000);
//---------------------------
  Cntr = 0;
  if (LED1 = = 1) {LED2 = 1;LED1=0;}  //如果LED1=1这是错的哦,LED1 = = 1才可
  Cntr = 1;
    _nop_ ();
    _nop_ ();
    _nop_ (); 
    _nop_ ();
  mDelay(20000);
//---------------------------
  Cntr = 0;
  if (LED2 = = 1) {LED3 = 1;LED2=0;}  //如果LED1=1这是错的哦,LED1= =1才可
  Cntr = 1;
    _nop_ ();
    _nop_ ();
    _nop_ (); 
    _nop_ ();
  mDelay(20000);
//---------------------------
  Cntr = 0;
  if (LED3 = = 1) {LED4 = 1;LED3=0;}  //91
  Cntr = 1;
    _nop_ ();
    _nop_ ();
    _nop_ (); 
    _nop_ ();
  mDelay(20000);
  //---------------------------
  Cntr = 0;
  if (LED4 = = 1) {LED5 = 1;LED4=0;} 
  Cntr = 1;
    _nop_ ();
    _nop_ ();
    _nop_ (); 
    _nop_ ();
  mDelay(20000);
  //---------------------------
  Cntr = 0;
  if (LED5 = = 1) {LED6 = 1;LED5=0;}  //如果LED1=1这是错的哦,LED1 == 1才可
  Cntr = 1;
    _nop_ ();
    _nop_ ();
    _nop_ (); 
    _nop_ ();
  mDelay(20000);
 //---------------------------
  Cntr = 0;
  if (LED6 = = 1) {LED7 = 1;LED6=0;}  //如果LED1=1这是错的哦,LED1= =1才可
  Cntr = 1;
    _nop_ ();
    _nop_ ();
    _nop_ (); 
    _nop_ ();
  mDelay(20000);
 //---------------------------
   Cntr = 0; 
  if (LED7= =1) {LED8=1;LED7=0;}  //LED2= =1与LED2 = = 1是一样哦,换s2==0一样。呵呵!
  //else P1 = 0xff; //128  此处不用
  if (s1= =1) {P1 = 0x00;}
  Cntr = 1;   
    _nop_ (); 
    _nop_ ();
    _nop_ ();
    _nop_ (); 
  mDelay(20000);
  }
 }

回帖

评论3

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China