原文如下:

单片机源程序如下:1.#include <reg52.h>2.#define uchar unsigned char3.#define uint unsigned int4.sbit DE=P2^1;      5.sbit WE=P2^2;   6.uint m,m0,m1,m2,gew,shiw;7.uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};8.void delay(uint);9.void main()10.{11.        TMOD=0x01;12.        EA=1;13.        ET0=1;14.        TR0=1;15.        TH0=(65536-45872)/256;16.        TL0=(65536-45872)%256;  17.        while(1)18.        {19.                WE=1;20.                P1=0xfe;21.                WE=0;22.                DE=1;23.                P1=table[shiw];24.                DE=0;25.                delay(20);26.                WE=1;27.                P1=0xfd;28.                WE=0;29.                DE=1;30.                P1=table[gew];31.                DE=0;32.                delay(20); 33.        }        34.}35.void T0_time() interrupt 1   36.{37.        TH0=(65536-45872)/256;38.        TL0=(65536-45872)%256;39.        m0++;40.        if(m0==20)41.        {42.                m0=0;43.                m++;44.                if(m==60)45.                        m=0;46.                shiw=m/10;47.                gew=m%10; 48.        }49.}50.void delay(uint ms) 51.{52.        uint i,j;53.        for(i=ms;i>0;i--)54.                for(j=110;j>ms;j--);55.}
复制代码求助大神,为什么我做的这个0到60计数循环,个位逢5丢数,十位逢1丢数啊。。

在仿真中确实存在修改一下代码即可 P1=0xfe; WE=1; WE=0;

xianfajushi 发表于 2019-6-25 10:08
在仿真中确实存在修改一下代码即可 P1=0xfe; WE=1; WE=0;

感谢帮助,这样修改确实解决了这个问题。请问这是什么问题?这是仿真软件的问题吗,我看书中的格式都是先开锁存输入数据再关锁存这种顺序。。。为什么在proteus里要改成先送数据再开关锁存?

纸上谈兵编写的教科书早该改了,P1=0xfe; WE=1; WE=0;我这样写的才是正确的,无论是从理论或仿真或实物都能正确无误执行,准备好数据打开锁存关闭锁存送入的是的的确确想要的正确的值;
而教科书WE=1; P1=0xfe; WE=0;这写在打开锁存瞬间写入的是上一个循环后存留的值,再送入想要的值就造成种种魅像,看不到某些数码显示或出现魅影(鬼影)或数码显示黯淡等等,如有的说使用CHAR写延时比较节约内存,殊不知使用2个CHAR与使用1个INT是一样的,因此教科书其实在纸上谈兵的人编写充斥种种误人子弟的谬论.

如论坛有人回复我的帖子说FOR循环不需要声明变量,而我用WHILE需要声明变量,这样可笑荒谬的回复,他忘记了变量使用前需要声明的基本原则了,试问变量不声明FOR循环中如何使用?这就是典型的纸上谈兵范.
至于锁存具体如何工作锁存数据脉冲上升沿下降沿等就不赘述,有兴趣的自己去深究.

从现象反推出产生现象的原因是科学定律;这在程序调试中是最常用的分析方法,中医也是这样从病症去反推产生病症的原因从而对证治病,西医何尝不是从果究因去寻找各种病菌呢都一样,从物理学上来说也是从果推因寻找现象背后的成因,如打雷闪电缘何产生去究其因,类推之化学界生物界等,又如破案从犯罪现场种种证据搜集去推导出犯罪的思想动机,总之从现象推导原因普遍存在于方方面面,因此是科学规律,人类正是在这种规律中建立和积累起来的知体系.

51单片机程序0到60计数个位逢5和6不显示,十位逢1不显示http://www.51hei.com/bbs/mcu-h24-1.html相关推荐

  1. 编写51单片机程序,输出方波,at89s52的单片机

    编写51单片机程序,输出方波. 要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波: P1.3 = 1.25kHz.P1.2 = 2.5kHz.P1.1 = 5kHz.P1.0 ...

  2. 51单片机程序开发入门知识

    51单片机在我的理解上来说,就是遵循51指令集工作的芯片.他就像一台超微型的电脑,里面有内存.硬盘.CPU等基本配备. 而他所谓的CPU使用的就是51指令集,他的硬盘就是内置的Flash,他的内存也是 ...

  3. 51单片机程序下载、ISP及串口基础知识

    本文详细介绍了串口.51单片机的ISP下载等基础知识,已经学过单片机的也可以看看,加强一下对这方面的了解. 串口 串行接口简称串口,也称串行通信接口,是采用串行通信方式的扩展接口. 我们比较熟悉的US ...

  4. Windows 7 64位用STC ISP下载51单片机程序的方法

    Windows 7 64位用STC ISP下载51单片机程序的方法2011-09-08 14:17 1  首先在宏晶的主页 http://www.stcmcu.com/ 下载最新的 STC-ISP.E ...

  5. 试题 基础练习 阶乘计算 (n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。   将a乘)

    问题描述 输入一个正整数n,输出n!的值. 其中n!=123*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表示a ...

  6. 单片机流星灯_LED流星雨灯的制作(51单片机程序代码)

    本文主要介绍了LED流星雨灯的制作原理,包括成品图片,电路原理图以及所用的51单片机的程序代码. 一.图片分享: 二.PCB文件分享: 三.原理图分享: 上面只做了5根灯管,如果需要增加灯管的话,只需 ...

  7. 51单片机0-99秒表计数器+60秒倒计时(数码管两位数)

    51秒表计数器+倒计时(数码管两位数) 一:简介 我们实践的效果是用数码管显示0~99并在按下"转换键"后,实现60秒倒计时,并用蜂鸣器报警提示,兼并计数器和倒计时两种功能. 主要 ...

  8. 51单片机配合振动传感器实现振动计数

    实验器材 51单片机开发板(需要配置显示数码管,蜂鸣器) 数字振动传感器 三根杜邦线 实验器材的组装 实验器材的组装中,在开发板的单片机Vcc端与Vss端分别与传感器的Vcc与Ground端口相连 将 ...

  9. 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析

    这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去.很显然这是一个循环,那么RO的值是多少呢,在以 ...

  10. 7-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,用手机TCP调试助手发信息给单片机控制小灯的亮灭)

    http://www.cnblogs.com/yangfengwu/p/8759294.html  如不做任何说明默认最头上的链接为上一篇链接,末尾的链接为下一篇链接 先把源码和资料链接放到这里 链接 ...

最新文章

  1. JDK中的坑:JDK中这些方法的bug你不要踩
  2. 基于redis的cas集群配置(转)
  3. tensorflow中的placeholder()
  4. php 屏蔽deprecated,新人求教PHP高手,Deprecated?
  5. 转]从一个男人关注的事情上 可以看出他的修养和抱负
  6. 城轨的两类时钟系统均同步于_基于两台SDS3000示波器同步产生“8通道”示波器...
  7. echart关系树状图_Echarts关系图-力引导布局
  8. java horizontalbarchart_Android-MPChart,HorizontalBarChart 水平柱状图颜色渐变
  9. 怎么下c语言程序,最新VC++(c语言程序下载安装)下载地址电脑版-CC软件
  10. 世界名著100部简介
  11. pci和pcie的区别
  12. 科学把妹法 ( ̄▽ ̄)
  13. 程序猿们,面对诱惑,你能hold住吗?
  14. ORACLE分配DBA权限
  15. 如何分析多个极兔快递物流每个网点之间是否超过12小时
  16. c#的decode用法
  17. 安卓苹果手机有效清除微信浏览器内部缓存
  18. html ajax实现ntlm,jquery – 在一个页面上通过AJAX POST获取NTLM挑战
  19. css 毛玻璃_前端开发,CSS的常用套路附demo的效果实现与源码)
  20. [源码和文档分享]基于java的葫芦娃大战妖精

热门文章

  1. 微信公众号教程(13)公司通讯录开发 上
  2. Webstorm克隆Git后npm install报错
  3. php libiconv close_无法编译PHP undefined reference to `libiconv_open
  4. pyCharm第三方插件下载---pygame下载方法
  5. 信号与系统_严国志_第一章_绪论
  6. vivado 开发教程(三) 在SDK中创建应用工程
  7. Java程序员面试简历模板
  8. 思源黑体官方下载地址
  9. 高通QFIL烧录错误解决方法
  10. Typescript入门教程(B站黑马程序员)