-
51单片机的计数器1方式0为什么不能实现计数功能?
51单片机的计数器1方式0为什么在Protues仿真不能实现计数功能?程序代码如下,求大神看一下.[img=1144,664]https://pic3.zhimg.com/v2-8c4a26c2aa8ff61ff8182aaa2b6d053e_b.png[/img][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]#include
//包含52系列单片机头文件[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]#define uint unsigned int[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]#define uchar unsigned char //宏定义[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]sbit dula=P2^6; //申明单片机的P2.6口为段选锁存器的输入端[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]sbit wela=P2^7; //申明单片机的P2.7口为位选锁存器的输入端[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uchar code table[]={0x3f,0x06,0x5b,0x4f,[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]0x66,0x6d,0x7d,0x07,[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]0x7f,0x6f,0x77,0x7c,[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]0x39,0x5e,0x79,0x71};[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]void delayms(uint); //延时子函数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]void display(uchar bai,uchar shi,uchar ge) //显示子函数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]dula=1; //打开段选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=table[bai];//将计数值的百位数字送到P0口[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]dula=0; //关闭段选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=0xff; //送位选信号前关闭所有显示[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]wela=1; //打开位选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=0xfe; //第一位数码管显示[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]wela=0; //关闭位选所存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]delayms(50);//调用延时函数延时50毫秒[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]dula=1; //打开段选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=table[shi];//将计数值的十位数字送到P0口[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]dula=0; //关闭段选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=0xff; //送位选信号前关闭所有显示[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]wela=1; //打开位选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=0xfd; //第二位数码管显示[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]wela=0; //关闭位选所存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]delayms(50);//调用延时函数延时50毫秒[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]dula=1; //打开段选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=table[ge];//将计数值的个位数字送到P0口[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]dula=0; //关闭段选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=0xff; //送位选信号前关闭所有显示[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]wela=1; //打开位选锁存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]P0=0xfb; //第三位数码管显示[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]wela=0; //关闭位选所存器[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]delayms(50);//调用延时函数延时50毫秒[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]void delayms(uint xms) //声明延时函数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uint i,j;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]for(i=xms;i>0;i--)[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]for(j=110;j>0;j--);//i=xms,即延时x毫秒[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uint read()//读取计数值函数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uchar tl,th1,th2;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uint val;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]while(1)//大循环[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]th1=TH1;//读取计数器1的高8位[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]tl=TL1; //读取计数器1的低8位[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]th2=TH1; //再次读取计数器1的高8位[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]if(th1==th2)//判断计数器的低8位是否向高8位产生了进位[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]break;//如果产生了进位再次读取计数器的高8位和低8位,如果没有则跳出循环[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]val=th1*32+tl;//[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]return val;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]void main()//主函数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uchar a,b,c;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]uint num;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]TMOD=0x40;//设定计数器1的工作方式为方式0(0100 0000)[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]TH1=0;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]TL1=0;//给计数器0的高8位和低8位赋初值[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]TR1=1;//启动计数器1,开始计数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]while(1)//大循环[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]num=read();//将读取计数器1函数的返回值放到num中[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]if(num>=100);//判断计数值是否达到了150次,如果没有则跳出[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]{[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]num=0;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]TH1=0;[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]TL1=0;//如果达到了150次将计数值清0并将计数器0的低8位和高8位重新赋值,重新开始计数[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]a=num/100; //将计数值的百位分离出[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]b=num%100/10; //将计数值的十位分离出[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]c=num%10; //将计数值的个位分离出[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]display(a,b,c);//调用显示函数,显示计数值[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align][align=left][color=rgb(18, 18, 18)][backcolor=rgb(255, 255, 255)][font=-apple-system, BlinkMacSystemFont, "][size=15px]}[/size][/font][/backcolor][/color][/align] 1363浏览量 1回复量 关注量