1. 首页 > 数码

用c语言写出P1.0驱动发光二极管闪烁,要求亮 2s,灭 1 秒. 晶振 11.0592Mhz?

用c语言写出P1.0驱动发光二极管闪烁,要求亮 2s,灭 1 秒. 晶振 11.0592Mhz?

基于51单片机的简易计数器设计,求c语言程序!

#include

#define uchar unsigned char

uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9

unsigned char sec=0,scanled;

unsigned char disdat[2];

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

void dischg()

{

disdat[0]=sec%10;

disdat[1]=sec/10;

}

void t0isr() interrupt 1 //秒计时

{

TH0=0x3c;

TL0=0xb0;

time++;

if(time==20)

{

time=0;

sec++;

if(sec>60)sec=0;

}

dischg();

}

void t1isr() interrupt 3 //显示

{

TH1=0xec;

TL1=0x78;

switch(scanled)

{

case 0:

P2=0x01;

P0=~ledtab[disdat[7]];

break;

case 1:

P2=0x02;

P0=~ledtab[disdat[6]];

break;

default:break;

}

scanled++;

scanled%=2;

}

main()

{

TMOD=0x11;

TH0=0x3c;

TL0=0xb0;

TH1=0xec;

TL1=0x78;

TR1=1;

TR0=1;

ET0=1;

ET1=1;

EA=1;

sec=0;

scanled=0;

time=0;

dischg();

while(1)

{

if(key1==0)

{

while(key1==0);

TR0=0;

}

if(key2==0)

{

while(key2==0);

TR0=1;

}

if(key3==0)

{

while(key3==0);

sec=0;

dischg();

}

}

}

试编写一个流水灯的程序(C语言)

#include<reg52.h>

#include <intrins.h>

void main()

{

unsigned int x,y;

P1=0xfe;

while(1)

{

P1=_crol_(P1,1);

for(x=500;x>0;x--)

for(y=113;y>0;y--);

}

}

P1接二极管(低电平有效)每隔x毫秒流动一下(可改变x的值)

震荡周期为11.0592MHz

把上面的P1=0xfe;改为P1=0x01;!!!

高电平也许要用上拉电阻!!

单片机编程:假设晶振频率为11.0592Mhz,试编写一程序,在P1.7引脚输出周期为2s的方波

1

2

3

4

5

6

7

8

9

10

11

12

#include<reg52.h>

sbit squ_out=P1^7 ;

voidmain()

{

     bit squ_mirror;

     unsigned inta,b;

     EA =0;

     while(1){

          for(a=106;a;a--)for(b=1085;b;b--); 

          squ_out = squ_mirror = ~ squ_mirror;

     }

}

周期小了一点点,大约少了57微秒左右。

如果要很准,你的晶振也真的很准,就用下面这个:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include<reg52.h>

sbit squ_out=P1^7 ;

voidmain()

{

 bit squ_mirror;

 unsigned inta,b;

 unsigned charc;

 EA =0;

 while(1){

  for(a=106;a;a--)for(b=1085;b;b--); 

  for(c=12;c;c--);

  c++;

  squ_out = squ_mirror = ~ squ_mirror;

 }

}

51单片机c语言延时程序 求解 请问下列程序中的110 是怎么计算出来的 晶振是11.0592

在keil里单步调试的时候查看汇编代码,就知道了是怎么运行的了,楼主要是懂汇编一看就会明白的,好运