单片机中断程序做一个一毫秒方波输出程序

单片机中断程序做一个一毫秒方波输出程序,第1张

说的比较笼统:

1、单片机中断定时可以实现,你选择的晶振是多少?

2、是51单片机吗?

下面给你一个T=1ms的51单片机晶振是110592M的参考程序,希望对你有用。

void Init(void)//声明中断定时初始化

{

EA=1;//中断总开关

TMOD=0x01;//T0工作模式是方式1

ET0=1;

TH0=0xfc; //定义初始值05ms 实际应用中可以技术

TL0=0x18;

TR0=1; //关闭T0计时

}

void timer0() interrupt 1 //using 0 //T0定时 定时05ms

{

EA=0;

TH0=0xfc;

TL0=0x18;

p10=~p10;

EA=1;

}

sbit p10=P1^0;

中断定时 在p10口输出T=1ms的方波 (TH0 TL0实际中要计算,本例以05ms为例)

希望对你有帮助

转载请注明:出处,谢谢合作

看你的程序,你的电路图应该是这样的吧(用P20做片选)

锯齿波源程序如下:

ORG 0000H

AJMP START

ORG 0050H

START:    MOV DPTR,#0FEFFH

LP:        MOV A,#00H

LP1:       MOVX @DPTR,A

INC A

AJMP LP1

  END

三角波源程序如下:

ORG 0000H

AJMP START

ORG 0050H

START:   MOV DPTR,#0FEFFH

TRI:       MOV A,#00H

UP:       MOVX @DPTR,A

INC A

CJNE A,#0FFH,UP

DOWN:  MOVX @DPTR,A

DEC A

CJNE A,#00H,DOWN

LJMP UP

END

#include <reg52H>

#define uint unsigned int

#define uchar unsigned char

sbit FF=P1^0; // 输方波

uchar t0=0;

void init();

void main()

{

init();

while(1)

{

if(t0==20) /1s/

{

FF=~FF;//输出方波

}

}

}

/初始化/

void init()

{

t0=0;

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

TR0=1;

EA=1;

}

/定时0/

void timer0() interrupt 1 /50ms/

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

}

100K的方波对51来说要求太高了,尽量不要用,这个程序如果频率不对,对

“TH0=0XF6;//初始值246”这句里的0xf6调整下,向上增加数值会提高精度。

/

MCU:S52

crystal:24M

/

#include<reg52h>

sbit output=P1^0;//P10脚输出100K

void timer0_init()

{

TMOD=0X02;//定时器0方式2

TH0=0XF6;//初始值246

ET0=1;//开中断

EA=1;//开总中断

TR0=1;//开定时器0

}

void main()

{

timer0_init();

while(1);

}

void timer_isvof()interrupt 1

{

output=!output;//中断翻转

}

#include <reg51h>//用单片机产生方波

void InitTimer0(void)

{

TMOD = 0x01;// 改变方波周其

TH0=(65536-1)/256; //对TH0 TL0赋值1us

TL0=(65536-1)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void main(void)

{

InitTimer0();

while(1); //无限循环 }

void Timer0Interrupt(void) interrupt 1{

TH0=(65536-1)/256; //对TH0 TL0赋值1us

TL0=(65536-1)%256;

P1=~P1; //每1US电平变一次,周期2US F=500khz

}

仿真正常 记得给分啰

1、定时器0和定时器1的工作方式分别是定时器方式1、计数器方式2

2、定时器0采用的是中断方式,定时器1采用的是查询方式

3、方波周期为100ms

4、方波周期为1s

5/6自己画图吧。

就是让某一个I/O口输出高低电平,例如让P0^0输出1HZ的方波吧,就是让它持续500ms的高电平,500ms的低电平,程序如下

#include

sbit

L1=P0^0;

void

delay1ms();

void

main()

{

LI=1;

delay1ms(500)

L1=0;

delay1ms(500);

}

要单片机产生峰值为3V的方波,可选STC单片机中33V系列的,就可以使单片机引脚输出方波峰值接近于3V,这容易实现。关键是方波的频率,要根据方波特率计算周期,从而确定出定时间,算出定时器初值。然后用定时器定时让引脚输出高低变化的电平就行了。

以上就是关于单片机中断程序做一个一毫秒方波输出程序全部的内容,包括:单片机中断程序做一个一毫秒方波输出程序、单片机汇编语言编程 方波源程序如下,锯齿波和三角波的源程序怎么编写、用单片机实现方波等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9493229.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存