用单片机C语言来实现相思病
现在我们就用一个实际的例子来描述:如何用编程语言来说明人的想法在机器上的实现。这个例子就是用用单片机C语言来实现"相思病",大家都知道,相思病是一种爱情所引起的病,因为双方的距离或他原因导致的一种思念对方的病。这就是相思病的特性,由这些特性我们能知道什么信息呢?我们要整理出对我们有用的信息,这是很重要的。
因为我们的题目是说用单片机来实现相思病的。所以相思病带给我们的有用信息有:
一、相思病是一个人思念另外一个人的,所以有相思病的思念者(简称"病主")和被思念者两个对象。
二、相思病是有病主自身体内产生的,并且是不断的循环的。
三、所谓心病还需心药医,必须通过"被思念者"给你传达的信息才能抑制病的发作。要想治好的话双方在 一起即可。
四、相思病发作的时候心里是很苦的;
病的特性我们了解了,接下来是一种"自然界思想转化法"的应用(都只是个人的观点),我们把单片机想象成现实中存在的人类,这个人他不会说话,我叫他做什么他就做什么的这样一个人。为什么能这样想象呢?这就要结合单片机的特性和人类的特性,他们之间有很多联系点,善于联系自然。因为一个科技的产生就是一种对自然界的发现,就比如雷达的产生是运用蝙蝠的发声原理。言归正传,单片机和人类有什么相似点呢?单片机内部有定时器/计数器可以在内部产生周期性的行为,而人类大脑的某一位置也会在体内产生某种感觉,比如喜怒哀乐的感觉。单片机有中断系统,中断系统有外部中断和内部中断,定时器/计数器便是根据中断的原理来产生周期性的行为的,它是一种内部中断。而外部中断是外界对单片机的一种刺激,就像人的眼睛可以当做外部中断的接口一样。太阳光照射到你的眼睛,给了你一个中断请求,大脑就会作出相应的处理,比如说闭上眼睛或者拿手挡住阳光。这就是外界对我们人进行刺激之后我们人做出的反映。外部中断产生的时候,单片机也能对中断作出相应的反映。利用这些联系,我们就可以用单片机来描述相思病啦。
下面是编程部分:
一、你要实现什么功能:用单片机C语言来实现"相思病"
二、确定思路。
1、用单片机的定时器/计数器来产生相思病。
2、用外部中断来接受"被思念者"传给你的信息,比如说短信,电话之类的。
3、用LED灯表示生病的状态。
4、用独立按键表示"被思念者"。
下面是用89C51单片机来实现代码部分:
完整代码下载地址:http://www.51hei.com/f/xxb.rar
#include reg51.h>//用P3^2定义接受"被思念者"的信息的外部中断,这里用独立按键连接sbit illstate_led=P1^2; //定义生病的状态,这里用LED显示,亮表示生病bit startill=0; //定义生病的标志位,1表示生病,0表示好了void Init_Timer0(void) //定时器0初始化{TMOD |= 0x01; //使用模式1,16位定时器 EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开}void Timer0_isr(void) interrupt 1 //定时器中断子程序{static unsigned long int i; //用来定时1小时 static unsigned char j; //用来定时1天static unsigned char k; //用来定时15天TH0=(65536-36000)/256; //重新赋值 12M晶振计算,指令周期1us,定时60msTL0=(65536-36000)*256; i++;if(i==100000) //定时1小时{i=0;j++;if(j==24) //定时1天{j=0;k++;if(k==15) //定时15天,相思病每15天发作一次{k=0;startill=1; //病发作了illstate_led=0; //LED灯亮了}}}}void Init_Ex0(void) //外部中断0初始化{EA=1; //全局中断开EX0=1; //外部中断0开IT0=0; //电平触发}void Ex0_isr(void) interrupt 0 //外部中断程序,表示药(短信)来了 {if(startill) {startill=0; //病好啦illstate_led=1; //灯灭啦}}void main(void){illstate_led=1;Init_Timer0();Init_Ex0();while(startill) //循环用来处理生病的状态{illstate_led=0; //LED灯亮了,生病啦 }}
上面就是用程序来模拟"相思病"啦。
评论