欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
利用單片機產生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.raoushi.com/bbs/)
Powered by Discuz! X3.1