标题:
利用单片机产生6路相同的脉冲 求编程思路
[打印本页]
作者:
adeyan
时间:
2020-6-20 23:30
标题:
利用单片机产生6路相同的脉冲 求编程思路
单片机晶振8Mhz,要求产生频率为10Khz的方波,同时输出6路,怎么写程序啊
作者:
xianfajushi
时间:
2020-6-21 05:21
计算定时器填充值,直接控制6个IO口就是。
作者:
angmall
时间:
2020-6-21 22:52
我给你来个程序试试
/*-----------------------------------------------
名称:定时器0
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit Out10=P1^0; //定义端口
sbit Out11=P1^1; //定义端口
sbit Out12=P1^2; //定义端口
sbit Out13=P1^3; //定义端口
sbit Out14=P1^4; //定义端口
sbit Out15=P1^5; //定义端口
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=0xFF; //给定初值,50us
TL0=0xDF; //50微秒@8.000MHz
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer0();
while(1);
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0xFF; //重新赋值
TL0=0xDF;
Out10=~Out10; //端口反相 输出方波
Out11=~Out11; //端口反相 输出方波
Out12=~Out12; //端口反相 输出方波
Out13=~Out13; //端口反相 输出方波
Out14=~Out14; //端口反相 输出方波
Out15=~Out15; //端口反相 输出方波
}
复制代码
作者:
adeyan
时间:
2020-6-23 22:23
angmall 发表于 2020-6-21 22:52
我给你来个程序试试
谢谢,要是调节占空比又如何修改呢?
作者:
wulin
时间:
2020-6-24 07:50
给你两套方案,单纯6路信号发生器就用主循环产生,如有其它程序运行就用定时器中断产生。6路相同的脉冲间无时差。
#include <reg51.h>
void main(void)
{
unsigned char i;
bit j;
while(1)
{
if(j) P1&=0xc0;
else P1|=0x3f;
i=12;
while(--i);//8MHz晶振 50us
j=~j;
}
}
/**************************************/
#include <reg51.h>
bit i;
void main(void)
{
TMOD= 0x02;
TH0 = 0xdf;//8MHz晶振 50us
TL0 = 0xdf;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
//其它运用程序
}
}
void Timer0Interrupt(void) interrupt 1
{
if(i) P1&=0xc0;
else P1|=0x3f;
i=~i;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1