⑴ 单片机作业求救!
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<reg51.h>
#include<INTRINS.h>
#defineu16unsignedint
#defineu8unsignedchar
u16count=0; //计数设定值
u16countTemp=0;//计数
u8zt=0; //状态
sbitfmq=P1^0; //蜂鸣器
u16jsflag=0; //闪烁计时用
/*********************************************************/
u8ds[4];//数码管显示缓存
//共阴
codeu8w[]={0xf1,0xf2,0xf4,0xf8}; //位码
codeu8d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//断码
voiddispaly(){//显示函数
staticu8a;
if(++a>3)a=0;
P0=0xFF;
P2=w[a];
P0=d[ds[a]];
}
/****************************************/
voidinit() //初始化函数
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}
/******************************************/
u8key=0xff;//消抖后的有效按键值
u8key_down=0x00;//按键下降沿扫描结果,1有效
u8key_up=0x00; //上升沿扫描结果,1有效
u8key_sc=0xff;//上次扫描的按键值
//检测端下降沿检测
sbitk1=P2^4;
sbitk2=P2^5;
sbitk3=P2^6;
sbitk4=P2^7;
//按键扫描程序
voidscanKey(){
staticu8temp0;
staticu8ms;
u8temp=0;
if(k1==1)temp|=0x01;
if(k2==1)temp|=0x02;
if(k3==1)temp|=0x04;
if(k4==1)temp|=0x08;
if(temp==temp0){//按键消抖
if(++ms>=5){//连续5次扫描的值一样,则认为是稳定状态
key=temp;
ms=0;
}
}else{
temp0=temp;
ms=0;
}
key_down=key_sc&(~key);//下降沿扫描
key_up=(~key_sc)&key;//下降沿扫描
key_sc=key;
}
u8readPIN(u8port,u8pin){
codeu8tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
return((port&tab[pin])==0?0:1);
}
/***********************************/
//预置状态
u16anjs=0;//长按计数标志
voidyzzt(){
ds[0]=count/1000%10;//设置值送入显示缓存
ds[1]=count/100%10;
ds[2]=count/10%10;
ds[3]=count%10;
if(readPIN(key,0)==0){//k1按下
if(readPIN(key_down,0)==1){//下降沿,即刚按下
if(++count>9999)count=0;//加1
anjs=2000;//倒计时2s
}
if(anjs==0){//倒计时到
anjs=200;//倒计时0.2s
if(++count>9999)count=0;//加1
}
}
//减1
if(readPIN(key,1)==0){
if(readPIN(key_down,1)==1){
if(--count>9999)count=9999;
anjs=2000;
}
if(anjs==0){
anjs=200;
if(--count>9999)count=9999;
}
}
if(readPIN(key_down,2)==1){//计入计数
zt=2;
}
}
//计数状态
voidjszt(){
if((countTemp==count)&&(jsflag<=500)){//闪烁
ds[0]=10;
ds[1]=10;
ds[2]=10;
ds[3]=10;
}else{//正常显示
ds[0]=countTemp/1000%10;
ds[1]=countTemp/100%10;
ds[2]=countTemp/10%10;
ds[3]=countTemp%10;
}
fmq=(countTemp==count?1:0);//蜂鸣器
if(readPIN(key_down,2)==1){//计入预置状态
zt=1;
}
if(readPIN(key_down,3)==1){//计数
if(++countTemp>9999)countTemp=0;
}
}
/*****************************/
voidmain()//主函数
{
while(1){
if(zt==0){
fmq=0;
init();//系统初始化
TR0=1;//定时器开始计时
zt=1;
}elseif(zt==1){
yzzt();
}elseif(zt==2){
jszt();
}
scanKey();
}
}
/****************************/
voidtimer0()interrupt1//1ms定时器
{
TH0=(65536-1000)/256;//重载初值
TL0=(65536-1000)%256;
dispaly();//显示
if(++jsflag>=1000)jsflag=0;
if(anjs!=0)anjs--;
}
⑶ 单片机作业 1.利用寄存器寻址和寄存器间接寻址把立即数85H送到RAM30H单元中。 2.把寄
我也是学生,1题寄存器寻址
MOV R1,#85H
MOV 30H,R1
寄存器间接寻址
MOV R1,#01H
MOV @R1,85H
MOV 30H,@R1
2题
MOV A,R0
MOV R1,A
4题B 5题C 7题 运算、控制 8题8位
其实我还是个浑水摸鱼的啥都不懂!错了别怪我哦。
⑷ 单片机大作业
单片机就是一个电脑,只不过是微型的,它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言(近几年,C语言也开始广泛被应用),它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其内核兼容MCS-51单片机。
帮媳妇写作业啊?
⑸ 单片机作业求大神解答!!!
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit), 常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。只能帮你到这了谢谢采纳
⑹ 单片机作业
#include <reg51.h>
sbit light=P1^0;
sbit key=P1^7;
void cpl()
{
light=1;
light=0;
}
void main()
{
key=1;
light=0;
while(1)
{
if(key==0) cpl();
}
}
⑺ 单片机作业,请高手帮个忙,最好能说下程序流程(二选一用C51编程):
已经按你的要求完成这两个设计,ProteUS仿真工程
115提取码:bh0y2pc6, e6rebbbh
⑻ 单片机课程作业
他那个作业的方法的话,或者是单机片都是一样的。
⑼ 单片机作业:用一片6264(RAM 8k*8)扩展数据存储器,根据你的设计说出其地址范围(画图)
如图所示:地址范围为:20000H~3FFFH(如果将CS接Vcc,地址可以为0000H~1FFFH)
⑽ 单片机作业题
#include<reg51.h>
bitflag;
uart()interrupt4
{
if(TI)TI=0;
flag=1;
}
main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
ES=1;
EA=1;
while(1)
{
if(flag)
{
SBUF=P1;
flag=0;
}
}