173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机输出1s的方波

htxw 2023-03-15 资讯中心 32 ℃

利用定时器中断,从单片机的P1.2口输出周期为1s的方波信号

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit P1_2=P1^2;

uchar a;

void main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;//定时5ms

TR0=1;

ET0=1;

EA=1;

while(1);

}

void timer0() interrput 1

{

if(++a=10) //循环10次,定时500ms

{

a=0;

P1_2=~P1^2;

}

}

硬件就不用画了,直接接P1.2就行

单片机,在P11口输出周期为1s的方波,不知道程序有没有错误,仿真的时候P11一直为高电平。

按照你的设计,要在电路板上连接一根线把P1.0 连接到P3.5。

不方便连线的话,也可以先这样改,不过你的程序设计的参数输出到P1.1的方波周期应该是2秒(T1每20ms*50 = 1秒中断1次,两次才是一个周期)

////P1.1?????????1s??? ,????:T0??1??10ms,??p1.0???????P3.5(T1??),??T1?????,??500ms??50?,

//T1?????2??,???2^8-x=50,x=206,??TH1=TL0=206,

# include reg52.h

# define uint unsigned int

sbit p1_0=P1^0;

sbit p1_1=P1^1;

sbit p3_5=P3^5;     // !!!!!

void main()

{

TMOD=0x61;

p1_0=0;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=206;

TL1=206;

EA=1;

ET0=1;

ET1=1;

TR0=1;

TR1=1;

while(1);

}

void t0_int(void) interrupt 1

{

 TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

p1_0=!p1_0;

p3_5=p1_0;    // !!!!!

}

void t1_int(void) interrupt 3

{

p1_1=!p1_1;

}

用c语言编程实现C8051F300单片机1s定时,50Hz的方波输出

#include

sbit wave=P1^0;

void SetupTimer0()

{

TMOD = 0XF0; //仅保留T1信息

TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器

TH0 = 256-250;//定时每0.25ms中断一次

TL0 = 256-250;

TR0 = 1; //开启定时器

ET0 = 1; //定时器0中断打开

}

data unsigned char us250;

data unsigned int ms;

bit WAVE; //用以记住当前wave的状态

void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务

{

if (++us2504) return;

us250=0; ++ms;

if (ms10) return;

//每10ms波形变化一次,20ms完成一个波形,所以波形是50Hz的

ms=0;

WAVE=~WAVE; wave=WAVE; //方波输出

}

void main()

{

us250=ms=0;

wave=WAVE=0;

SetupTimer0();

EA = 1; //全局中断打开

while(1); //在中断函数中实现方波输出

}

单片机输出1s的方波的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:单片机输出1s的方波

<