我停了几天等你们的作业。仙影是个好孩子,交了。扯淡黑同学,还没看到反应,不管了,自己看着办。电电,你自己说的,明天。赶紧给我把开发板带回来,给我写。你说“你不知道怎么写程序”,没问题,接下来,我说的就是 “怎么写程序”。 你不是唯一的一个,包括半年前我手下带的两个新人,其中一个小子C语法还可以,但是就是不会写程序。归根到底,他是不知道要写什么,怎么写。 我简要说说。没有前面讲的那个 小明搬水 以及后来发展到 小明指示机器人搬水 的事情吧? 这个故事,我原以为够明白地说明了这两个要点: 1.CPU很笨,它只会一条一条指令我们事先安排好的程序代码,而它执行的过程就是程序运行的过程——我是说,是我们预先安排的动作决定了程序会有什么用? 2.CPU很笨,还很死板,它只会一条一条往下执行——当然,设计程序的人不蠢,所以人会设计跳转指令,让CPU乖乖地在人设计的跳转指令要求下,在一系列排列好的指令堆里跳来跳去——你们可以想象一下康乐棋,你在一路上总会遇到奇奇怪怪的 后退3步,前进5步......是,就是那么回事。 微博上有人提到,现在有人在试验 在 Arduino这个平台上讲C语言,这确实是一个很不错的想法,因为实在有太多人学了半天,连自己的C代码到底干了什么都不知道——他们中有绝大多数人和你一样,不知道怎样 用C代码去组织一件事情的执行。考虑到现实状况,所以我推荐你们每个人配备起一套51板子。只要有LED,我就有办法让你们学会你们想知道的东西。 所以,我再次说一下赶紧给我配备起一套51开发板,棍哥有话,不会再说第二次。 字数有点多,下一个邮件,以 仙影交的代码为例,我简单演示了一下 “怎么写程序”这个过程。
副录:仙影交的作业
作业
#include<reg51.h>
#include<INTRINS.H>
sbit led = P1^0;
//延时时间:500000微秒
void Delay(int a)
{
unsigned char i,j,k;
for(a;a>0;a--)
for(i=127;i>0;i--)
for(j=14;j>0;j--)
for(k=139;k>0;k--); }
int main(void)
{
led=0;
int b,c,d;
for(d=10;d>0;d--)
{
for(b=5;b>0;b--)
{
delay(2);
led=~led;
_nop_();
_nop_();
led=~led;
}
led=1;
delay(10);
led=0;
for(c=5;c>0;c--)
{
led=~led;
_nop_();
_nop_();
led=~led;
delay(1);
}
led=1;
delay(10);
led=~led;
}
led=0;
delay(20);
}
作业..修改后版本..将延时调整为0.1秒
#include<reg51.h>
#include<INTRINS.H>
sbit led = P1^0;
//延时时间:100000微秒
void delay(int a)
{
unsigned char i,j,k;
for(a;a>0;a--)
for(i=2;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
int main(void)
{
led=0;
int b,c,d;
for(d=10;d>0;d--)
{
for(b=5;b>0;b--)
{
delay(9);
led=~led;
delay(1);
led=~led;
}
led=1;
delay(50);
led=0;
for(c=5;c>0;c--)
{
led=~led;
delay(4);
led=~led;
delay(1);
}
led=1;
delay(50);
led=~led;
}
led=0;
delay(100);
}
副录:仙影交的作业
作业
#include<reg51.h>
#include<INTRINS.H>
sbit led = P1^0;
//延时时间:500000微秒
void Delay(int a)
{
unsigned char i,j,k;
for(a;a>0;a--)
for(i=127;i>0;i--)
for(j=14;j>0;j--)
for(k=139;k>0;k--); }
int main(void)
{
led=0;
int b,c,d;
for(d=10;d>0;d--)
{
for(b=5;b>0;b--)
{
delay(2);
led=~led;
_nop_();
_nop_();
led=~led;
}
led=1;
delay(10);
led=0;
for(c=5;c>0;c--)
{
led=~led;
_nop_();
_nop_();
led=~led;
delay(1);
}
led=1;
delay(10);
led=~led;
}
led=0;
delay(20);
}
作业..修改后版本..将延时调整为0.1秒
#include<reg51.h>
#include<INTRINS.H>
sbit led = P1^0;
//延时时间:100000微秒
void delay(int a)
{
unsigned char i,j,k;
for(a;a>0;a--)
for(i=2;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
int main(void)
{
led=0;
int b,c,d;
for(d=10;d>0;d--)
{
for(b=5;b>0;b--)
{
delay(9);
led=~led;
delay(1);
led=~led;
}
led=1;
delay(50);
led=0;
for(c=5;c>0;c--)
{
led=~led;
delay(4);
led=~led;
delay(1);
}
led=1;
delay(50);
led=~led;
}
led=0;
delay(100);
}