本*也是前几天开端触摸单片机,从最经典也是最有用的8051开端下手。看了几天书和材料,发现曾经一向看的微机还有大一上时分在计算机学的一些东西仍是挺有用的。咱们都是看郭天祥的吧=。= 本*不是。我是在x宝上买的开发板讲课都是x宝店家独家镜头,可谓是高端大气上档次,低沉豪华有内在,精约时髦世界范,低端粗鄙甩节操,土憋矫情无下限,狂拽酷帅吊炸天,冷傲尊贵接地气,时髦动感小新鲜,心爱村庄非主流。好吧,废话不多,其实我也是看郭天祥的,哈工大究竟不是盖的。ps:x宝老板是南邮的高材生。
本*老老实实地把PPT最终的课后练习都做了遍,彻底没有什么百度,那些弱爆了换句话说。
下面,本*就郭天祥课件里边课后练习的标题做出自己的独家见地-。-
题一:第一个发光管以距离200ms闪耀。
卧槽-,- 这种标题小儿科。本*表明,写这类程序有两种办法,我仍是喜爱直接对IO口总线界说。
#include
#include
sbit buzz=P3^4;
void delay()
unsigned int t=30000;
while (t–);
void main()
unsigned char temp;
temp=0xfe;
while(1)
P1=temp;
temp=_crol_(temp,1);
buzz=~buzz;
delay();
}
题三: 用8个发光管演示出8位二进制数累加进程。
#include
#include
void delay()
unsigned int a=30000;
while(a–);
void main() //灯亮为0,灭为1;
P1=0x00;
for(;P1<=0xfe;P1++)
delay();
}
题四:8个发光管距离200ms由上至下,再由下至上,再重复一次,然后悉数平息再以300ms距离悉数闪耀5次。重复此进程。
#include
#include
unsigned int temp;
void delay(unsigned int z)
unsigned int x;
unsigned char y;
for(x=z;x>0;x–)
for(y=100;y>0;y–);
void main()
unsigned int a,b,c;
while(1)
for(a=0;a<2;a++)
temp=0xfe;
while(b<=6)
P1=temp;
temp=_crol_(temp,1);
delay(500);
while(c<=6)
P1=temp;
temp=_cror_(temp,1);
delay(500);
P1=0xff;
for(a=0;a<5;a++)
P1=~P1;
delay(1000);
}
题五:距离300ms第一次一个管亮活动一次,第2次两个管亮活动,顺次到8个管亮,然后重复整个进程。
#include
#include
unsigned int temp;
void delay(unsigned int z)
unsigned char x;
unsigned char y;
for(x=z;x>0;x++)
for(y=100;y>0;y++);
void main()
unsigned int a;
while(1)
temp=0xfe;
while(a<=6)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0xfc;
while(a<=5)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0xf8;
while(a<=4)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0xf0;
while(a<=3)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0xe0;
while(a<=2)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0xc0;
while(a<=1)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0x80;
while(a<=0)
P1=temp;
temp=_crol_(temp,1);
delay(30000);
temp=0x00;
P1=temp;
delay(30000);
}
题六:距离300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两头往中心活动三次;再从中心往两头活动三次;8个悉数闪耀3次;封闭发光管,程序中止。
#include
void delay()
unsigned int a=30000;
while(a–);
void main()
unsigned char a;
while(1)
for(a=0;a<3;a++)
P1=0x55;
delay();
P1=0xaa;
delay();
for(a=0;a<3;a++)
P1=0x7e;
delay();
P1=0xbd;
delay();
P1=0xdb;
delay();
P1=0xe7;
delay();
for(a=0;a<3;a++)
P1=0xe7;
delay();
P1=0xdb;
delay();
P1=0xbd;
delay();
P1=0x7e;
delay();
for(a=0;a<3;a++)
P1=0x00;
delay();
P1=~P1;
delay();
}
学习是一个不断堆集的进程,郭天祥说十天能够学完,表明我做不到,不仅仅是学完8051,其实其他芯片程序大体仍是通用的,我诶想想是这样的=。= 不管怎么说,c言语是根底,当然也有用汇编的,本*表明汇编看不懂。。。。