完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
51单片机的计数器1方式0为什么在Proteus仿真不能实现计数功能?程序代码如下,求大神看一下.下图为Proteus中搭建的仿真电路,其中,左侧单片机产生PWM波。 #include<reg52.h> //包含52系列单片机头文件 #define uint unsigned int #define uchar unsigned char //宏定义 sbit dula=P2^6; //申明单片机的P2.6口为段选锁存器的输入端 sbit wela=P2^7; //申明单片机的P2.7口为位选锁存器的输入端 uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//共阴极数码管编码 void delayms(uint); //延时子函数 void display(uchar bai,uchar shi,uchar ge) //显示子函数 { dula=1; //打开段选锁存器 P0=table[bai];//将计数值的百位数字送到P0口 dula=0; //关闭段选锁存器 P0=0xff; //送位选信号前关闭所有显示 wela=1; //打开位选锁存器 P0=0xfe; //第一位数码管显示 wela=0; //关闭位选所存器 delayms(50);//调用延时函数延时50毫秒 dula=1; //打开段选锁存器 P0=table[shi];//将计数值的十位数字送到P0口 dula=0; //关闭段选锁存器 P0=0xff; //送位选信号前关闭所有显示 wela=1; //打开位选锁存器 P0=0xfd; //第二位数码管显示 wela=0; //关闭位选所存器 delayms(50);//调用延时函数延时50毫秒 dula=1; //打开段选锁存器 P0=table[ge];//将计数值的个位数字送到P0口 dula=0; //关闭段选锁存器 P0=0xff; //送位选信号前关闭所有显示 wela=1; //打开位选锁存器 P0=0xfb; //第三位数码管显示 wela=0; //关闭位选所存器 delayms(50);//调用延时函数延时50毫秒 } void delayms(uint xms) //声明延时函数 { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--);//i=xms,即延时x毫秒 } uint read()//读取计数值函数 { uchar tl,th1,th2; uint val; while(1)//大循环 { th1=TH1;//读取计数器1的高8位 tl=TL1; //读取计数器1的低8位 th2=TH1; //再次读取计数器1的高8位 if(th1==th2)//判断计数器的低8位是否向高8位产生了进位 break;//如果产生了进位再次读取计数器的高8位和低8位,如果没有则跳出循环 } val=th1*32+tl;//将计数值转为10进制数 return val; } void main()//主函数 { uchar a,b,c; uint num; TMOD=0x40;//设定计数器1的工作方式为方式0(0100 0000) TH1=0; TL1=0;//给计数器0的高8位和低8位赋初值 TR1=1;//启动计数器1,开始计数 while(1)//大循环 { num=read();//将读取计数器1函数的返回值放到num中 if(num>=100);//判断计数值是否达到了100次,如果没有则跳出 { num=0; TH1=0; TL1=0;//如果达到了10 } a=num/100; //将计数值的百位分离出 b=num%100/10; //将计数值的十位分离出 c=num%10; //将计数值的个位分离出 display(a,b,c);//调用显示函数,显示计数值 } } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11792 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 20:56 , Processed in 0.709160 second(s), Total 69, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号