❶ 急急急!!!!!!!!!单片机大作业求助!求大神给出具体答案,不胜感激,小弟将献上仅有的55分!!!
#include "htc.h"
//相关宏定义
unsigned char a = 0;
unsigned char b = 0;
/*初始化D端口*/
void port_init()
{
TRISD = 0x00 ;
RD0 = 0;
RD1 = 0;
}
/*定时器1初始化*/
void time1_init()
{
INTCON = 0xC0 ; //开启全局中断
T1CON = 0x31 ; //定时器开启
TMR1IE = 1 ;//允许开启定时器1中断
TMR1IF = 0 ;//清楚中断标志位
TMR1H = 0xFB ;//定时为10ms
TMR1L = 0x20 ;
}
/*定时器中断程序*/
void interrupt time1()
{
TMR1IF = 0 ;
TMR1H = 0xFB ;
TMR1L = 0x20 ;
a ++ ;//计数
b ++ ;
}
void main()
{
port_init();
time1_init();
while(1)
{
if( a == 5 )//经过五次中断时 T= 5*10ms=50ms
{
RD0 = !RD0 ;//取反,灯闪烁
a = 0 ;
}
if( b == 25 )//经过25次中断时 T= 25*10ms = 250ms
{
RD1 = !RD1 ;//取反,灯闪烁
b = 0 ;
}
}
}
不知道是不是你要的答案。
❷ 单片机大作业
单片机就是一个电脑,只不过是微型的,它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言(近几年,C语言也开始广泛被应用),它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其内核兼容MCS-51单片机。
帮媳妇写作业啊?
❸ 单片机大作业:电子钟设计
www.cndzz.com
用一个晶振来当基本的参考量,然后用单片机的IO口来控制LED的亮还是不亮就ok啊
这个很简单的,你做做,很有意思的,我们当年用面包板搭过此种电路
❹ 单片机作业求救!
1:
RMD:
MOV R2,#0
MOV DPL,#0
RMDP:
MOV DPH,#20H
MOVX A,@DPTR
MOV DPH,#30H
MOVX @DPTR,A
MOV DPH,#10H
MOV A,R2
MOVC A,@A+DPTR
MOV DPH,#20H
MOVX @DPTR,A
INC R2
INC DPTR
CJNE R2,#6,RMDP
RET
2:
SERCHM:
MOV R0,#30H
MOV R2,#20
MOV B,#0
SM:
MOV A,@R0
CJNE A,#'M',SM1
INC B
SM1:
INC R0
DJNZ R2,SM
MOV A,B
JZ SM2
MOV A,#'Y'
RET
SM2:
MOV A,#'N'
RET
4:
DATC:
MOV DPL,#0
MOV R0,#30H
MOV R2,#30H
DATC1:
MOV DPH,#20H
MOVX A,@DPTR
MOV @R0,A
MOV DPH,#10H
MOVX @DPTR,A
CLR A
MOV DPH,#20H
MOVX @DPTR,A
INC DPTR
DJNZ R2,DATC1
RET
❺ 单片机作业
自己写的。
第一题
查询法:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void main()
{
uchar i;
IT0=0;
led=1;
while(1)
{
if(IE0==1)
{
IE0=0;//清除中断标志
i++;
if(i==10)
{
i=0;
led=!led;
}
}
}
}
中断法:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void interrupt_init()
{
IT0=1;//设置外部中断0下降沿有效
EX0=1;//允许外部中断0有效时执行外部中断0的中断子函数
EA=1;//总中断允许
}
void EX_0() interrupt 0
{
static uchar i;
i++;
if(i==10)
{
i=0;
led=!led;
}
}
void main()
{
interrupt_init();
while(1);
}
第二题:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit output=P1^2;
bit NEGATE=1;
void timer_0()//定时器的初始化 6M晶振一个周期2us
{
TMOD=0x01;//用定时器0.工作在方式1.最大可以容纳65536
TH0=65510/256;// 25*2us=50us into interrupt1
TL0=65510%256;
ET0=1;//允许定时器0执行中断子函数
EA=1;//允许总中断
TR0=1;//打开定时器0
}
void time_0() interrupt 1
{
output=!output;
NEGATE=!NEGATE;
if(NEGATE)
{
TH0=65510/256; //25*2us=50us
TL0=(65510%256)+TL0;//提高精确度
}
else
{
TH0=65360/256; //175*2us=350us
TL0=(65535%256)+TL0;
}
}
void main()
{
timer_0();
output=1;
while(1);
}