单片机设计问题,求大神帮我ps搞笑图忙

求大神帮个忙,请教单片机的问题_百度知道
求大神帮个忙,请教单片机的问题
LCALL DELAY
DJNZ 50H,START
LCALL DELAY
DJNZ 50H,FLASH
MOV R3,#0EFHDEL2:
MOV R4,#0FFHDEL1:
END我想实现8个LED灯从左向右再从最右端回来,接着循环,什么在我调试的时候,它只能从左向右但是到了最又端就回不来,keil检查的时候没有错误
提问者采纳
0000H 改了一下试试MAIN:
LCALL DELAY
DJNZ 50H,START
50H,#8FLASH:
LCALL DELAY
DJNZ 50H,FLASH
MAINDELAY:
MOV R3,#0EFHDEL2:
MOV R4,#0FFHDEL1:
并不是从左向右再从右向左的循环啊?是一直从左向右
50H,#8 对了这里忘了改了
A,B 改成这样
试试FLASH:
终于好了,谢谢啊。你改的这段程序和原来有什么不同吗,问什么我的就不能循环
,放在循环内后,每次循环始终是 先执行 MOV
A,B,所以在这个循环中是不变的。
提问者评价
真是谢谢啊,这程序我搞了两天了 ,终于好了
其他类似问题
按默认排序
其他1条回答
1.什么是单片机?简单地说,单片机就是一个小计算机系统。为了说明清楚这个问题,得要从计算机说起。提到计算机,大家可能马上会想到“显示器、鼠标、键盘”,不过,这不是一个计算机的核心和关键,计算机的核心部分在一边的机箱里呢。打开机箱,可以看到,机箱里有主板、硬盘、光驱等。仔细观察主板,这上面有CPU、内存条、BIOS芯片,通常还有25针的打印机接口等,这些部件都是通过主板上的连线相互连接。不论计算机复杂程度如何,它总是由运算器,控制器,存储器,输入/输出接口,总线这五个部分组成。通常运算器和控制器被做成一块芯片,也就是CPU(中央处理器)。在计算机主板上,内存条和BIOS芯片就是存储器,25针打印机接口就是输出/输出设备,而总线则被设计在主板上,即各部件相互连接的线路。图1在一些应用场合,人们不需要计算机完成十分复杂的运算,但却希望计算机小巧,可靠,价格低。于是人们就把组成计算机的这5个部分全部集成到一块芯片上,也说是一块芯片就能构成一个独立的计算机,在当时的技术条件下,这是一件了不起的事情,于是人们就用这个特征来为之命名,称为“单片机”。将构成一个计算机所需要的5个部分全部都集成到一块芯片中,这块芯片是否要很大、价格是否很高呢?并非如此。如果要把图1所示主板上的所有元件都集成到一块芯片中,那当然非常昂贵,可能技术上也无法实现,但很多单片机中所需要用到的功能完全没必要那么强大,因此很多单片机体积很小,价格也很低。如市场上常见的单片机有8,14,16,18,20,28,40,84等引脚,有些甚至只有6个引脚,如图2所示是微芯公司(Microchip)发布的一款6引脚单片机。而价格从几元到几十、上百元的都有,有些品种在大批量定购时甚至可以低至1元以下。图2刚接触到单片机的人往往会有个疑惑:既然人们已经有能力制造功能强大的计算机,为何还要生产些功能不强的计算机?其实,功能强弱并不是决定是否生产的决定因素,市场需要才是关键。比如,用来控制一台电箱的计算机显然没必要使用“奔腾”芯片的强大运算能力,只要进行非常简单的计算,作个比较,看一看温度是否在所控制区间之内,然后再做出相应的控制就行了。单片机在人们的生活中、工农业生产设备中处处有应用,例如各定时装置、自动控制装置等。爱好者学习单片机应该注意观察事物,找到自己周围能够使用单片机的场合,从而将学到的知识应用到实际中去。例如,使用单片机技术改造传统的机电设备、在特定的场合使用单片机替代PLC等就有着广阔的应用前景;又如,使用单片机控制电扇、抽油烟机、空调等,从而制作出具有更强功能、能够通用的控制器,也是可以尝试的。2.单片机是如何工作的?单片机的工作过程就是一个不断“取指令-分析指令-执行指令”的过程。单片机的程序以一条一条指令的形式存放在程序存储器中,单片机开始工作后,就从程序存储器的特定位置开始取指令,然后由单片机内部的控制器对指令进行分析,根据指令要求,进行“取数、送数、算术运算、逻辑运算、跳转”等基本操作中的一种或几种,这些操作都在一个规定的周期中完成,执行完了以后,到下一个存储器单元中取指令,重复刚才的操作(当然,这些要执行的操作具体内容可能跟上一次不一样了),如此不断重复,直到断电为止。这里所说的“存储器特定位置”、“规定的周期”等与单片机的型号有关,下面以51系列单片机为例来说明。在51系列单片机中有一个名为PC的寄存器(就是用来存数的一个容器),在单片机复位后,这个寄存器中的内容被置为0000H,单片机内部的控制器总是根据PC寄存器中的值去相应的程序存储器单元取指令,因此,开机后,将从0000H单元取第一条指令,分析执行,同时,PC值将作相应的调整,指向将要执行的下一条指令的位置,下一条指令的位置在哪里呢?对于51单片机来说,一条指令可能占用一个字节、二个字节或三个字节,如果第一条指令是单字节指令,取完第一条指令以后,PC的值就会变为0001H,因此,第一条指令执行完毕以后,将从0001H单元中取出第二条指令来执行,以此类推。如果程序是顺序执行的,PC的值将始终不断增加,如果程序中有跳转指令,该指令将影响PC中的值,使PC中的值指向将要执行的下一条指令所在地址单元。这种跳转既可能是正向的,例如由0000H跳转到0030H,也可能是反向的,即往回跳转,如由200H跳转到100H。正是由于指令可以影响到PC中的值,才使得程序可以实现“分支”、“循环”等各种功能。那么,执行一条指令的时间又是多少呢?对于51单片机来说,指令执行时间有三种可能,单周期、双周期和四周期,不管一条指令需要做多少工作,都必然在规定的时间内完成。3.单片机程序的作用是什么?如何编写?如何写入单片机?单片机程序的用途是让单片机“听话”,按人们所预定的设计完成一系列动作,最终实现一个特定的功能。例如使用单片机控制流水灯,接通电源后,第一次灯亮,然后延时一段时间,第二次灯亮,然后延时一段时间,第三次灯亮……,延时一段时间后又回到第一次灯亮,如此循环不已。这里就有这样的一些问题:第一次亮几盏灯、延时多少时间、一个循环中设置多少次不同的灯亮的情况……,这些决定了流水灯的花样,流动的速度,而这些,单片机显然没有自我判断能力,必须依靠人们给它“布置”任务,而它则是按人们的设计依次执行。要让单片机“听话”,就要用单片机能够听懂的语言发布命令,单片机能够听懂的语言称之为“指令”。任何一种型号单片机能够接受的指令都是有限的,51单片机的指令条数为111条,而PIC单片机的指令仅有35条。每一条指令完成一个最基本的动作,人们为了要完成一个特定的功能,就要将这些指令排列组合,成为一个指令序列,这就是程序。指令的表示形式有两种:机器语言和汇编语言。以51为例,如果要让P1.0引脚变为低电平,用机器语言来表示就是 C2H 90H,将这两个数放进单片机的程序存储器中,单片机执行后,就可以让P1.0引脚变为低电平了;而要让P1.0引脚变为高电平,用机器语言来表示就是D2H,90H。至于为什么是这两个数字,大家没必要追究,这是设计这块芯片的设计工程师规定的,我们不能更改,只能学习。C2H,90H就是一条指令,显然这样的指令形式是很难记忆的,编程也非常困难,于是人们使用了“助记符”来代替这些数字。例如C2H,90H的助记符是CLR P1.0,而D2H,90H的助记符是SETB P1.0,由于助记符采用了英语字母的缩写,有一定含义,因此比数字形式的指令易记、易用。使用助记符形式的指令来编写程序就称之为“汇编语言源程序”。但是汇编语言源程序是没有办法直接送到单片机内部去的,使用助记符形式的指令编写的程序最终还是要变成为诸如:C2H,90H,D2H,90H,这种形式的指令才能被送入单片机的程序存储器。将助记符形式的指令变为数字形式的指令的过程称之“汇编”。汇编有两种方法,一种是“手工汇编”,即人们通过查表的形式找到所写汇编指令的数字形式然后写下来;另一种是“机器汇编”,即编写好汇编语言源程序以后,使用一个计算机软件对这些源程序进行处理,从而得到数字形式的指令序列,这个指令序列通常被称为“机器码”,即可以直接被机器所执行的代码。机器汇编后得到的数字形式的指令序列以一个文件的形式保存在磁盘上,这个文件的扩展名一般是HEX,即人们常说的HEX文件。得到了HEX文件后,就可以将其写入程序存储器中了。要将程序写入芯片,通常需要一个称之为“编程器”的专用设备,在计算机上运行与之配套的编程软件,然后在这个软件中打开HEX文件,即可将其写入芯片中。随着技术的发展,编程方式越来越多,但总的概念是这样的,具体的细节,将在另一个问题“单片机编程器是什么”中回答。4. 8位、16位、32位单片机中的“XX位”指什么?8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是~即十进制的0~255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0~65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0~,即每次参与运算的数据最大不能超过。8位、16位、32位与单片机的性能密切相关,通常32位机的性能要高于16位机,而16位机的性能又要高于8位机。为什么会这样呢?这要从2个方面来分析。第一,位数不同,运算效率不同。对于8位机而言,由于在一次运算中的每一个数都不能超过8位,因此即便如100+200=300这样的运算,它也不能一次完成,因为300已超过了8位所能表达的最大范围(255),因此,要对这样的一个式子进行运算,就要编写一段程序,将运算分步完成,最后合成起来得到一个正确的结果。而如果采用16位单片机来运算的话,那么一次运算就够了,显然分步完成所需要的时间要远远大于单步完成所需要的时间。同样道理,当某个运算的结果或者中间值大于65535时,16位机也不能一次运算,要分步实现它,而32位机则可以一次运算完成。第二,商业因素。通常运算能力越高,表示这个单片机性能越强,当然,价格高一些人们也可以接受,有了价格空间,生产商通常都会在这些芯片中提供更多的其他的功能,使得芯片的整体性能得到更大的提升。典型的单片机中,80C51系列,PIC系列,AVR系列都是8位单片机;80C196、MSP430系列是16位机;而目前非常热门的ARM系列则是32位机。5. 单片机编程器、仿真器、烧写器、下载线各是什么?有什么用处?单片机编程器是用来将程序代码写入存储器芯片或者单片机内部的工具,如图5-1所示是一个典型的编程的外形。图中黑色的集成电路插座,通过拔动手柄可以将置于其中的集成电路芯片锁紧或松开。编程时锁紧以保证接触良好,编程完毕松开,可以更换下一片芯片。图5-1编程器当芯片是双列直插形式时,直接插在座子上就可以烧写了,但如果遇到如图5-2所示的各种封装形式的芯片,又如何写烧写呢?一种方法是使用适配器,如图5-3所示是各种封装芯片所使用的适配器。图5-2 各种封装形式的集成电路QFN32 适配器 SOP28适配器图5-3 各种封装的编程适配器另一种方法是使用下载线。随着技术的进步,越来越多的单片机芯片开始支持“ISP”功能,即In System Programmer,在线可编程技术。利用这种技术,将空白的(尚未编程的)芯片直接焊在印刷线路板上,利用预先留下的几个引脚即可对芯片进行编程,不必将芯片拆下来放到编程器上,因此,这给小批量制作带来了极大的方便,也省去了购买价格昂贵的适配器。如图5-4所示是使用下载线对芯片进行在线编程的示意图。图5-4 下载线对芯片进行在线编程示意图6.自学单片机必备的硬件设备有哪些?学习单片机,除了需要电脑以外,还需要以下的一些器材。1.实验板如果你对单片机还一无所知,那么自制或者购买一块实验板是比较好的选择。通常在实验板上会设计一些开关、LED指示灯、数码管、各种接口芯片等常用器件,通过对这些器件的编程练习,逐步掌握单片机的编程技术。2.仿真机仿真机的用途是替代电路板上的单片机芯片,仿真机通过串行口、USB接口等方式与与PC机联机通信,接收PC端控制软件发出的指令,以单步、过程单步、全速运行等各种方式来执行程序,以单步或过程单步方式执行程时,每次执行完程序后可以将执行的结果反馈到PC端的控制软件中显示出来。由于单片机编程时必须要明确每一条指令执行完毕后会有什么样的结果,弄清实际运行后的结果是否与设想的结果相符,因此,仿真功能对于单片机的学习和开发可以起到很重要的帮助作用。3.编程器或者下载线其用途是将代码写入单片机芯片内部。对于学习者来说,有了仿真机也可暂时不配编程器或下载线,因为有了实验板、仿真机就可以做实验了。但是建议配置一台,这样可以对单片机开发的各个环节都有所了解。4.万用表、电烙铁等电子制作工具单片机开发,不是简单的编程,到目前为止,还少有纯粹的“单片机程序员”,通常要求开发者软、硬件方面都要熟悉,因此,这些电子制作工作还是要配备的。需要说明的是,这里所说的仿真机、实验板、下载线或编程器等都是就一般概念而言的,并不涉及到具体的产品,市场上也有一些产品在设计时将实验板、仿真功能、下载或编程功能等中的一部分或者全部都集成到一块板上,构成一整套的实验系统。上面介绍的这些设备,都需要有一定的投入,爱好者未必一定能够购买,其实,只要有一定动手能力,也可以自制一些简易的实验设备,同样可以开始学习。这里推荐采用STC单片机进行学习的方案,STC系列单片机的特点是可以直接通过串口下载程序,从而将开发工具的成本降到最低。如图6-1所示是一个完整的电路,器件成本仅20多元,但可以实现诸如单灯闪烁、流水灯、键控灯、PC控制灯等一些常用功能,从而学习基本指令、定时器、计数器、串口通信等单片机知识。图6-1 简单的单片机实验电路板图中R1~R9为1K电阻,D1~D8是发光二极管,E1用10u电解,Y1用11.0592M晶振,C1和C2用27P小磁片,C3~C7用104磁片,U1使用STC89C52芯片,U2用MAX232。再自制或购买一条串口电缆,用于和电脑的通信,制作线时使J1与电脑的串口端2,3,5分别相连即可。制作好这个电路板以后,使用Keil软件(在可以下载DEMO版)编译、链接程序,得到Hex文件,使用STC_ISP软件(在下载)将Hex文件写入芯片中,从而观察程序运行的效果。7.目前国内常用的单片机有哪些?1.80C51及其兼容系列(1)80C51系列,这是最基本的系列。包括80C31,80C51,87C51,80C32,80C52,87C52等芯片,虽然这些芯片已基本不再使用,但它们是后续发展的芯片的基础。其中80C31单片机片内没有ROM,80C51内部是一次性可写4K的PROM,87C51内部是4K的EEPROM,这几种芯片内部RAM均为128字节。而后三种芯片其内部RAM均为8K,后两种芯片的片内ROM为8K字节。(2)80C51兼容系列这些芯片通常都与51系列单片机在指令一级兼容,但都扩充了诸多的新功能。常见的主要有以下一些。STC89系列单片机,其主要特点有:直接通过串口对单片机编程;可编程为倍速运行;超低功耗;内置看门狗;内部FLASH  ROM可作为EEPROM作断电保存数据之用。STC12系列单片机,其主要特点有:单时钟周期,工作频率0~35M,相当于普通80C510~420M;宽电压范围;低功耗;芯片内置E2PROM功能;内置硬件看门狗;通用I/O口可以设置为四种工作模式,在强上拉模式时可以“吐出”电流。菲利普的LPC系列,其主要特点有:内置RC置振荡器,选择RC振荡器时不需外接振荡器件;所有口线均有20mA的LED驱动能力;有较宽的工作电压范围。C8051F系列,其主要特点有:一个机器周期仅为一个时钟周期;增加了中断源;有内部独立的时钟源或接外部时钟,并能在程序运行时实现内、外部时钟的切换。每个I/O口引脚都可以设置为推挽或漏极开路输出,C8051F系列单片机I/O口最为独特的是增加了数字交叉开关,利用数字交叉开关可将内部数字系统资源定向到P0、P1和P2端口I/O引脚。这个系列很多型号的芯片具有ADC、DAC、PCA等功能。2.PIC系列PIC单片机的发展思路与51单片机不同,它不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,依靠发展多种型号来满足不同层次的应用要求;精简指令使其执行效率大为提高。目前有PIC10、PIC12、PIC16、PIC18系列数百个品种。以PIC16F676芯片为例,该芯片内置1K字FLASH ROM,128字节EEPROM,64字节RAM,8路10位AD转换器,内置精度高达±1%的振荡器,极低功耗,宽工作电压范围,这样一款高性能的14脚芯片,价格不到¥7,性价比相当高。3.AVR系列AVR系列单片机是增强型RISC结构的单片机,其主要特点是:速度快,一个机器周期仅为一个时钟周期;品种丰富,与PIC系列类似,依靠发展多种型号来满足不同层次的应用要求;支持ISP、IAP功能,可在线编程,方便远程维护;工作范围宽、抗干扰能力强。以ATMEGA8芯片为例,该芯片内置8K Flash ROM,512字节EEPROM,1K字节的RAM,8路10位AD,内置RC振荡器。这样一款高性能28引脚的芯片,价格仅在¥7左右,性价比也相当高。4.其他其他常用的单片机包括:ST、EMC、摩托罗拉、三星等等。这些单片机有些市场用量很大,但我们并没有重点介绍,因为我们介绍的内容主要针对业余爱好者,有些芯片虽然功能强大、性价比也很高,但其并不针对业余爱好者,小批量的芯片很难买到,仿真机、C编译器等开发工具价格极其昂贵,所以这里不作介绍,有兴趣可以在网络上搜索有关资料。8.常用单片机的大致价位是多少?单片机的价格相差很大,从小于1元到几十元,上百元不等。下面就大致介绍一下常用单片机的价格。单片机的价格与其出货量、性能等有很大的关系。以80C51系列单片机为例,这是一个庞大的系列,这个系列中的单片机性能有很大差别。如内部ROM不同,从1K~64K不等;引脚数不同,从14脚到84脚不等;内部RAM不同,从128字节到2K不等;内部模块不等,如有一些单片机内部配置了8位模数转换器,有一些配置了10位模数转换器,有一些内部带有CCP模块等等。不同配置的单片机价格不同,一般爱好者常用的89S52单片机芯片价格约为6元左右。这款芯片片内ROM为8K,片内RAM为128字节,内部有看门狗电路。一种常用的PIC单片机PIC16F676,14引脚,带有10位的AD转换器,价格仅7元左右。通常功能越强,价格也越高,但这并不绝对,尤其是不同厂商的同内类产品,往往没法直接加以比较,因此,读者如希望了解各种芯片的价格,还是要针对具体的型号进行查找,有一些网站有相关报价,可以供参考。
哥来,你给我的是什么啊,答非所问
帮个忙的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求单片机大神技术帝帮忙!!基于msp430的电子秤问题。lcd显示和称重没问题。但是连接后屏幕数字无变化。_百度知道
求单片机大神技术帝帮忙!!基于msp430的电子秤问题。lcd显示和称重没问题。但是连接后屏幕数字无变化。
以下是程序:void uart_init(void){
UCA0CTL1 |= UCSSEL_1;
// CLK = ACLK
UCA0BR0 = 0x03;
// 32kHz/9600 = 3.41
UCA0BR1 = 0x00;
//
UCA0MCTL = UCBRS1 + UCBRS0;
// Modulation UCBRSx = 3
UCA0CTL1 &= ~UCSWRST;
// **Initialize USCI state machine**
IE2 |= UCA0RXIE;
// Enable USCI_A0 RX interrupt}void main(){
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;//上面两句将内部DCO校准至1MHz
BCSCTL2 |= SELM_0;//MCLK采用1M的内部DCO
BCSCTL2 |= DIVS_3;//SMCLK采用125K的时钟
port_init();//初始化IO口
lcd_init();//初始化液晶
uart_init();//初始化串口0
delay_ms(1000); //“请设置10s 内的打开时间”
clrram (); //最后一页 第一行 write_str(1,1,tab6,10);//最后一页 第二行 data_converter(tab7,weight); write_str(2,1,tab7,12);//最后一页 第三行
TACTL|=TACLR;
TACTL|=TASSEL_1+ID_0+MC_1;
TACCTL0=CCIE;
TACCR0=40000;
P4OUT |=BIT0;P6SEL |= 0x01;
//使用A/D通道A0
ADC12CTL0 &=~(ENC);
//设置ENC为0,从而修改ADC12寄存器的值
ADC12CTL0 |= ADC12ON+SHT0_2+MSC;
//开ADC12内核,设SHT0=2 (N=4)
ADC12CTL1 |= SHP+CONSEQ_2 ;
//SAMPCON信号选为采样定时器输出,单通道多次
ADC12CTL1 |= CSTARTADD_0;
//转换起始地址为:ADCMEM0
ADC12CTL1 |= ADC12SSEL_1+ADC12DIV_0 ; //选择SMCLK,时钟分频为1
ADC12MCTL0 |= SREF_2+INCH_0;
//R+=2.5V R-=VSS,A0输入
//使能中断ADC12IFG A0
ADC12CTL0 |=ENC+ADC12SC;
//使能ADC转换}#pragma vector =TIMERA0_VECTOR__interrupt void TimerA0_ISR(void)
unsigned int
while ((ADC12IFG & ADC12BUSY)==0);
for(i=0;i&20;i++);
SUM =ADC12MEM0;
ADC12CTL0 &=~(ENC);
weight=SUM/20;
data_converter(tab7,weight);
ADC12CTL0|=ENC+ADC12SC;
//开启转换
(weight&=50)
P4OUT &=~BIT0;
}用的是f2616,求看程序有无问题。急急急!!!
提问者采纳
uart_init函数的问题。UCA0工作于UART模式时,需要设置相应的IO口,并打开IO口的第二功能。还有一点,建议不要使用20次累加算法,建议8次或者16次,用移位来计算结果。因为430的除法是用软件实现的,会占用大量的CPU时间。
其他类似问题
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁树莓派打造视频监控机器人Verybot...
根据自己的一些从业经验,将这些系统设计时针对波特率自适应问题做一些阐述和分享..
四位数码管的秒表程序有点问题,求大神指导
<em style="color:#999;font-size:12 margin-left:10" id="authorposton13-5-25 23:51:31&nbsp
记时部分有点不对,调了半天也没调好,求指导
23:49 上传
点击文件名下载附件
16.01 KB, 下载次数: 30
用什么芯片啊,啥都不说,别人还要花Eb下载
就是啊,让别人指导还要人掏钱
xouou 发表于
用什么芯片啊,啥都不说,别人还要花Eb下载
不好意思,我不知道怎么设置的,不是我的本意
程序在下面了:#include&reg52.h&
#define uchar unsigned char
#define uint&&unsigned int
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit key1=P3^3;
sbit key2=P3^4;
void delay(uint x)
& &uint i,j;
& &for(i=x;i&0;i--)
& &&&for(j=110;j&0;j--);
&&s_shiwei=table[sec/10];
&&s_gewei=table[sec%10];
&&ms_shiwei=table[msec/10];
&&ms_gewei=table[msec%10];
void display()
& &delay(50);
& &delay(50);
& &delay(50);
& &P2=0xf7;
& &delay(50);
void KEY()
&&if(key1==0)
& & delay(30);
& & & & if(key1==0)
& & & && & TR0=~TR0;
&&if(key2==0)
& & delay(30);
& & & & if(key2==0)
& & & && & if(TR0==0)
& & & && && &XS();
& &TMOD|=0x01;
& & TH0=0xd8;//10ms定时
& & & & TL0=0xf0;
& & & & TR0=0;
& & & & ET0=1;
& & & & XS();
& & & & while(1)
& & & && & display();
& & & && & KEY();
void t0(void) interrupt 1
& &TH0=0xd8;//10ms定时
& &TL0=0xf0;
& &msec++;
& &if(msec==100)
& &&&msec=0;
& & & &&&sec++;
& & & &&&if(sec==100)
& & & && &sec=0;
& &s_shiwei=table[sec/10];
&&s_gewei=table[sec%10];
&&ms_shiwei=table[msec/10];
&&ms_gewei=table[msec%10];
独立按键去抖不够,delay(30)太小,可以直接用while(key1 == 0);&&
楽不单荇 发表于
独立按键去抖不够,delay(30)太小,可以直接用while(key1 == 0);
谢谢,不过,主要问题是,记时不对,跑的太快,而且四个数码管都在变化,麻烦帮忙看看
把代码贴上来不是更好?
andylfg 发表于
把代码贴上来不是更好?
程序吗?上面发过了,现在把仿真也发上来
(70.93 KB, 下载次数: 0)
15:52 上传
一曲清明殇歌 发表于
谢谢,不过,主要问题是,记时不对,跑的太快,而且四个数码管都在变化,麻烦帮忙看看 ...
display函数延时太大了,每次50个毫秒,一次显示扫描下来超过200毫秒。让中断和display冲突了,把扫描延时改成延时1到2毫秒,试试还有没有问题
一曲清明殇歌 发表于
谢谢,不过,主要问题是,记时不对,跑的太快,而且四个数码管都在变化,麻烦帮忙看看 ...
我还想说一句,你的秒是100进制的吗?
wyb0104 发表于
display函数延时太大了,每次50个毫秒,一次显示扫描下来超过200毫秒。让中断和display冲突了,把扫描延 ...
谢谢,这个问题我改过了,那个延时刚刚好,还有,我的秒表前两位是秒,后面是毫秒的显示,是00.00到99.99的
楼主,你用的什么芯片
skyfly_HUT 发表于
楼主,你用的什么芯片
谢谢,我用的是AT89C52的
楼主,你按K2键清除计数的时候并没有重装计数器初值,你在停止计数的时候,计数器是什么值是不定的
那低头一笑的温 发表于
楼主,你按K2键清除计数的时候并没有重装计数器初值,你在停止计数的时候,计数器是什么值是不定的 ...
谢谢啊,我试试
一曲清明殇歌 发表于
谢谢啊,我试试
不过还是不行,谢谢你的建议
display最好p1在每次显示后清0
nmsokgo 发表于
display最好p1在每次显示后清0
好的,我试试,谢谢
问题太多了,你可以加我的qq号码,撒旦阿萨德撒旦
站长推荐 /4
Powered by}

我要回帖

更多关于 求大神帮我ps搞笑图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信