A. 如何用C語言改變合泰單片機自帶PWM的頻率,如1KHZ,2KHZ,等等頻率
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit Waveout1=P1^0;
sbit CF=P3^2;//調節頻率
int num,a,f;
int Timer0_H,Timer0_L;
void Init()
{
num=0;
a=1000;
f=2;
Waveout1=0;
TMOD=0x02;
TH0=(uint)(256-(1000/(2*f)));
TL0=(uint)(256-(1000/(2*f)));
ET0=1;
EA=1;
TR0=1;
}
void main()
{
Init();
while(1)
{
if(CF==0)
{
f++;
TH0=(int)(256-(1000/(2*f)));
TL0=(int)(256-(1000/(2*f)));
while(CF==0);
}
if(num==a)
{
num=0;
Waveout1=~Waveout1;
}
}
}
void Timer0()interrupt 1
{
num++;
}
B. 合泰單片機C語言 宏 #define PB_SWC _1b_0 #define PB_SWPU _19_0什麼意思
#define PB_SWC _1b_0
這個就是用PB_SWC來替代_1b_0,_1b_0的值為多少你還得繼續去追蹤
#define PB_SWPU _19_0
這個意思也一樣,就是用PB_SWPU 來替代_1b_0,_19_0
如果#define _19_0 10 那麼PB_SWPU 就等於 10
C. 合泰單片機用什麼語言
C語言和匯編語言都行。
D. 合泰的單片機用C語言如何把一個變數定位到指定ROM地址 比如:const unsigned char mydata @0x300;
ROM是保存指令和常量的地方,不是存變數的地方;
如果是訪問flash之類的可擦寫ROM可以當成是外部RAM使用,一般通過absacc.h
里的XBYTE[addr] 來定義外部地址的。
PS:如果是常量需要保存到ROM的指定地址,查看項目文件下的*.m51文件,裡面有程序段及常數段的地址分配,修改code memory 下的BASE(起始地址、基地址)和LENGTH(長度、位元組數)值,可以指定程序段或常量的ROM地址。
E. 合泰單片機模擬時顯示WDT溢出,怎麼解決
呵呵 為你解答:
1 你使用了看門狗功能,在WDT周期內,你的程序必須要及時進行看門狗清零
即使用 CLR WDT指令
2 如果程序中已經在多處使用了看門狗清零,還是WDT溢出(復位),可以考慮調整WDT的復位時間。即增大WDT周期。
呵呵 趕快去試試吧 別忘了選擇:滿意回答哦
F. 合泰單片機HT67F系列的使用問題
1,寄存器名與手冊對不上號是很正常的,不光合泰的單片機有這種情況,其它的單片機也有這種情況,出現這種情況程序編譯是通不過的。所以有時候要關心一下頭文件,以頭文件的器存器命名為准,或自己更改頭文件。
2,關於管腳復用問題。一般情況下不對管腳進行配置默認都是普通IO,但是如果要使用管腳的其它功能,在使用前就要先對相關寄存器進行配置,比如要使用AN1就要先配置好AD轉換相關的寄存器,如:ADR、ADRL、ADRH、ADCR、ACSR寄存器。
G. 合泰單片機外部中斷c語言,如按下按鍵,燈亮
你程序里有每個問題,第一P3口的初始化應該設定為0XFF,因為你是要讀引腳的信號。
第二,你的P2^3引腳置零後蜂鳴器就響,你又沒置1,所以你的蜂鳴器會一直響。我臨時寫了個小程序,也沒運行,但應該沒問題,希望讀你有幫助。注意:中斷時間間隔最好是大於延時時間。
#include<reg52.h>
sbit Beep=P2^3
bit Beep_flg
void delay(void) //延時
{
unsigned char i,j;
for(i=3;i>0;i--)
for(i=100;i>0;i--);
}
void main()
{
P3=0xff;//P3口初始化
EA=1;//全局中斷開
EX0=1;//外部中斷0開
IT0=1;//邊沿觸發
while(1)
{
if(Beep_flg) //是否中斷
{
Beep=0; //打開蜂鳴器
delay(); // 延時
Beep_flg=0;
}
Beep=1; //關蜂鳴器
}
}
void it0(void) interrupt 0 using 1
{
Beep_flg=1;
}