采用MCS-51单片机控制8只LED交替闪烁,间隔是500毫秒,看我以下的程序错在哪?怎么仿真不出来?

作者&投稿:崔瑞 (若有异议请与网页底部的电邮联系)
采用MCS-51单片机控制8只LED交替闪烁,具体要求如下(1)8只LED分别连接在P1.0-P1.7引脚上,引脚与LED间可~

很简单,
void main()
{
while(1){
P1=0xf0;
delayms(500);
P1=0x0f;
}
}
delayms两个for循环搞定

#include
void Delay1ms(unsigned int count) /*延时函数,延迟时间为count×1ms)*/
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}

main()
{
unsigned char LEDIndex = 0; /*声明8位变量LEDIndex,用来指示8个LED中哪个被点亮,初始值为00000000*/
bit LEDDirection = 1; /*声明位变量LEDDirection,用来指示点亮的方向,初始值为1*/
while(1) /*一直循环执行大括号里面的语句*/
{
if(LEDDirection) /*当LEDDirection=1时,0000 0001左移LEDIndex位,取反后送给P2端口,点亮一个LED*/
P2 = ~(0x01<<LEDIndex);
else /*当LEDDirection=0时,1000 0000右移LEDIndex位,取反后送给P2端口,点亮一个LED*/

P2 = ~(0x80>>LEDIndex);
if(LEDIndex==7) /*当一次循环结束时,把LEDDirection取反,下次循环时将以相反的顺序点亮*/
LEDDirection = !LEDDirection;
LEDIndex = (LEDIndex+1)%8; /*LEDIndex+1对8取余,保证LEDIndex在0~7之间*/
Delay1ms(500); /*延时500ms,即LED的点亮间隔为0.5s*/
}
}

把中断函数放到MAIN函数之前,而且要中断函数起始行写成void Timer0() interrupt 1,而不是你写的AD()。然后不是很建议此类函数使用定时器中断延时。可以自己写一个延时子函数,通过调用延时子函数实现延时。
程序如下:
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
void mDelay(uint Delay)
{ uint i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
void main()
{ P1=0xff;
while(1)
{
P1=0xaa;
mDelay(500);
P1=0x55;
mDelay(500);
}
}

问题非常的简单,主函数的名字写错了!!!!!! 应该是 void main() 不是 void mian()!!!!!!!!!

void mian()
……
主函数,应该是:
main()

你一个注释都没有,很难猜到你的意思。你的晶振是多少M?可能是你的延时时间不够,由于人眼的暂留,你看不到它灭。把计数器提高到1000看一看。

仿真是什么出不来,是灯不交替闪烁还是时间不对?


MCS-51单片机4个I\/O口的作用是什么?三总线是如何分配的?为什么说能作为...
4个I\/O口的作用是:第一功能是普通I\/O口,其中P0口需外接上拉电阻;第二功能各不相同,分别为:P0口:作外部三总线的地址总线(低8位)\/数据总线;P1口:作扩展型芯片的外部引脚,例如52的C\/T2外部信号输入,S52之WDT的报警输出等;P2口:作外部三总线的地址总线(高8位);P3口:作串口、...

51单片机分几部分,都有些什么作用,??
需要注意的是52系列的单片机一般不具备自编程能力。目前,国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。编辑本段主要功能 ·8位CPU·4kbytes 程序存储器(ROM) (52为8K)·256bytes的数据存储器(RAM) (52有384bytes的RAM)·32条I\/O口线·111条指令,大部分为单字节...

MCS-51单片机内部RAM可分为几个区?各区的主要作用是什么
MCS-51单片机内部RAM可分为5个区:1、存储矩阵区:RAM的核心区域是一个寄存器矩阵,用来存储信息,称为存储矩区。2、地址译码器区:地址译码器区的作用是将寄存器地址所对应的二进制数译成有效的行选信号和列选信号,从而选中该存储单元。3、读\/写控制器区:访问RAM时,对被选中的寄存器进行读操作...

要用传送指令访问MCS-51单片机外RAM它的指令操作码助记符是什么?_百度...
1.MOVX A,@Ri 指令名称:寄存器间接寻址外部RAM读指令 指令代码:E2H~E3H 指令功能:读外部RAM低256单元数据送累加器 字节数: 1 机器周期:2 2、MOVX A,@DPTR 指令名称:数据指针间接寻址外部RAM读指令 指令代码:E0H 指令功能:读外部RAM单元数据送累加器 操作内容:A1←((DPTR))字节数:...

MCS-51单片机汇编语言的SP指令有什么作用?
MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。除了初始化堆栈时直接给SP赋值,SP显式存在,其它的对SP有影响的指令,对SP的操作都是隐式的...

MCS-51系列单片机包括哪几个主要部件?各自的逻辑功能如何?急!!!_百度...
MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),片外最多可扩展64KB的RAM,构成两个地址空间,访问片内RAM用“MOV”指令,访问片外RAM用“MOVX”指令。它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。 MCS-51单片机的内部数据存储器在物理上和...

80C51单片机简介?
80C51单片机属于MCS-51系列单片机,由Intel公司开发。概述:1、80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。2、80C51内部有时钟电路,但需要石英晶体和微调电容外接,由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广...

当MCS-51单片机应用系统需要扩展外部存储器或其它接口芯片时...
答: 当MCS-51单片机应用系统需要扩展外部存储器或其它接口芯片时,( P0  )可作为低8位地址总线使用。准确讲,是P0口经74LS373锁存器锁存后得到低8位地址。所以,这个题不够严密。

我想知道关于单片机的型号有 AT89s51 89c51 MCS-51 8051 怎么区分,之间...
AT89S51和(AT)89C51都是ATMEL公司生产的MCS-51核单片机,不同的是前者可以在系统编程(建成ISP),后者只能用传统的专用编程器进行并行编程,89C51其实就是AT89C51的简写而已,“AT”被省略了,可能也有些公司生产的芯片称XXX89C51的。MCS-51是INTEL公司发明的单片机核,后来把这个核(专利)卖给了世界...

MCS-51系列单片机的中断系统分为几个优先级?如何设定?
MCS-51单片机有两个中断优先级。在51单片机中,有2个可编程定时\/计数器·5个中断源,2个优先级,21个专用寄存器。另有8位CPU的4kbytes程序存储器(ROM) ,128bytes的数据存储器(RAM),32条I\/O口线·111条指令,大部分为单字节指令。优先级设定方法:1、IP的状态由软件设定,某位设定为“1”,...

石景山区19829596747: 采用MCS - 51单片机控制8只LED交替闪烁,具体要求如下(1)8只LED分别连接在P1.0 - P1.7引脚上,引脚与LED间可 -
通叔盐酸: typedef unsigned char byte; byte L = 0x01; byte C = 0; void timer(long t) { long s = 10000; while (t-- > 0) while (s-- > 0) ; } void LED() { while (true) { timer(500); P1 = L; L <<= 1; C++; if (C % 5 == 0) { C = 0; L |= 1; } } }

石景山区19829596747: 设MCS - 51的单片机P1端口控制8个LED灯,要求从右向左逐个点亮,每只灯亮0.5 -
通叔盐酸: #include<reg51.h> #include<intrins.h> #define uchar unsigned char uchar cnt; void t0isr() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; cnt++; P1=_crol_(P1,1); } main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; P1=0xfe; while(1); }

石景山区19829596747: MCS - 51单片机的控制总线主要信号有哪些?各信号的作用如何? -
通叔盐酸: 控制总线的信号有三个: ALE 用作p0口的低八位地址总线的锁存信号; P\S\E\N\用作片外程序存储区读取控制信号; E\A\用作选择内部程序存储器.

石景山区19829596747: 求助用MCS - 51单片机写一个简单控制程序. -
通叔盐酸: /* 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令. * 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭. */ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接...

石景山区19829596747: STC89C51单片机,烧了个流水灯的程序,用P1口接了八个灯,灯经过上拉电阻接正电源.出了问题,具体如下: -
通叔盐酸: 即使是LED的驱动,也不要直接用IO口来做.比如,你的限流电阻是1K,电源为5V,8个IO最大会吸入40mA的电流.有些单片机是不支持这样大的电流的.但是因为吸入电流太大而造成的可能性不是很大.我没有看数据手册,不好乱说.看看有没有其他原因,比如:看门狗,电源等的原因.

石景山区19829596747: 用MCS - 51单片机的串行口扩展一个并行8位I/O接口,实现8个LED循环依次点亮(间隔1秒)?
通叔盐酸: 将串行输入的8位数字,转变为并行输出的8位数字,可以利用如74HC595这类芯片, 也就是说单片机的管教连续输出8个位,再通过串行输入转化成并行输出,(移位)

石景山区19829596747: 我要用MS - 51单片机控制程序要求8盏LED -
通叔盐酸: 你看看这个程序,用p1口控制八个灯 org 0000h ajmp main org 0030h main: mov r2,#03h mov a,#01h mmm: mov r3,#08h rl a mov p1,a lcall dely500ms rl a mov p1,a lcall dely500ms lcall dely500ms rl a mov p1,a lcall dely500ms lcall dely500...

石景山区19829596747: MCS - 51访问片外存储器时,利用( )信号锁存来自( )发出的低8位地址信号. -
通叔盐酸: MCS-51访问片外存储器时,利用( ALE )信号锁存来自( P0 )发出的低8位地址信号.

石景山区19829596747: MCS - 51单片机,中断方式,汇编问题. -
通叔盐酸: ORG 0000H LJMP MAIN ORG 0003H LJMP EXT0 ORG 0030H MAIN: MOV SP,#5FH SETB IT0 SETB EX0 SET EA MOV A,#0AAH SJMP EXT0: JNB P3.2,$ MOV A,P1 CPL A RETI END

石景山区19829596747: MCS - 51单片机的 EA、ALE和PSEN 端的功能是什么? -
通叔盐酸: ALE——ALE 为地址锁存允许信号,在访问外部存储器时,ALE 用来锁存 P0送出的低 8 位地址信号. PSEN ——外部程序存储器的读选通信号.当访问外部 ROM 时, PSEN 产生负脉冲作 为外部 ROM的选通信号;在访问外部 RAM或片内 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网