❶ 合泰單片機觸控按鍵模塊的參考振盪器頻率怎麼設置請求各位高手指點一下,感謝
個人理解是TKMNC1的MNTSS控制參考頻率選擇,8bit 時隙計數器TKTMR決定REF OSC,剛好最近我想不用官方庫試試合泰的觸摸寄存器怎麼用,不過暫時都不成功
❷ 合泰單片機匯編問題
sdz
的意思
如果(COUNT1-1)等於0,那麼跳過緊跟著下面的那條指令.不等於0,則正常執行下一條,指令數據手冊裡面有介紹的.
數據段,表示是變數,程序段表示是常量rom,程序代碼存在裡面.
proc是定義子程序的偽指令,它和endp
分別表示子程序定義的開始和結束兩者必須成對出現。
❸ 合泰單片機 unsigned char _pac @ 0x13; unsigned char _pa @ 0x12; #define _pa7 _12_7 是什麼意思呀
@ 可以通知編譯器將定義的變數放在指定的地址空間。不同的編譯器有不同的定義方式和參數。在用之前,可以參考一下編譯器的手冊,一般就在安裝目錄下。
❹ 合泰ht46f49e單片機
1、51單片機計數器的脈沖輸入腳。主要的脈沖輸入腳有Px,y, 也指對應T0的P3.4和對應T1的P3.5,主要用來檢測片外來的脈沖。而引腳18和19則對應著晶振的輸入脈沖,脈沖的頻率和周期為
F = f/12 = 11.0592M/12 = 0.9216MHZ T = 1/F = 1.085us
2、定時器有兩種工作模式,分別為計數模式和定時模式。對Px,y的輸入脈沖進行計數為計數模式。定時模式,則是對MCU的主時鍾經過12分頻後計數。因為主時鍾是相對穩定的,所以可以通過計數值推算出計數所經過的時間。
3、51計數器的計數值存放於特殊功能寄存器中。T0(TL0-0x8A, TH0-0x8C), T1(TL1-0x8B, TH1-0x8D)
4、TLx與THx之間的搭配關系
1)、TLx與THx之間32進制。即當TLx計到32個脈沖時,TLx歸0同時THx進1。這也稱為方式0。
2)、TLx與THx之間256進制。即當TLx計到256個脈沖時,TLx歸0同時THx進1。這也稱為方式1。在方式1時,最多計65536個脈沖產生溢出。在主頻為11.0592M時,每計一個脈沖為1.085us,所以溢出一次的時間為1.085usx65536=71.1ms。
3)、THx用於存放TLx溢出後,TLx下次計數的起點。這也稱為方式2。
4)、THx與TLx分別獨立對自己的輸入脈沖計數。這也稱為方式3。
5、定時器初始化
1)、確定定時器的計數模式。
2)、確定TLx與THx之間的搭配關系。
3)、確定計數起點值。即TLx與THx的初值。
❺ 合泰單片機匯編問題
data .section 'data' ;數據段 這樣的寫法是比較標準的整齊的匯編寫法,就是告訴你這段就是定義變數 和REGISTER 等.現在好多人定義這些都是放在INC文件里就可以的了.
code .section at 0 'code' 這個就是告訴你下面這段就是單片機的程式了.
子程式里proc 是子程式開始,endp就是子程式的結束,其實現在好多人 直接寫子程式名就可以的了. 好像 sub: ret
sdz 是 register 自減1, 如果為0 就是跳過下一條指令,一般的用法是
SDZ R
JMP LOOP
$
❻ 學什麼單片機好學單片機怎麼樣能賺錢嗎有前途嗎
先學51單片機,可以看看學習視頻,對於每個人來說,多學習一種技能 可以拓寬 就業渠道,
單片機學習可以先學習一些模擬示例,如
#include<reg51.h>
#define uchar unsigned char
uchar temp;
int key1,key,disbuf;// 此表為 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char ledx[8];
uchar t,j,i;
bit s0,s1;
void scan() //要是按鍵了,掃描鍵盤編碼值
{
P1=0xF0;
for(j=0;j<250;j++);
temp=P1;
switch(temp)
{
case 0xe0: key1=0; //
break;
case 0xd0: key1=1; //
break;
case 0xb0: key1=2; //
break;
case 0x70: key1=3; //
break;
}
P1=0x0f;
for(j=0;j<250;j++)
temp=P1;
switch(temp)
{
case 0x0E: key=key1+0;
break;
case 0x0D: key=key1+4;
break;
case 0x0B: key=key1+8;
break;
case 0x07: key=key1+12;
break;
default : key=-1;
}
if((key1+1)&&(key+1)) disbuf=key;
}
void ejjc() //判斷是否按鍵
{
P1=0xF0;
if(P1!=0xF0) { scan();s0=1;}
else { s0=0; s1=1;}
}
void main()
{
TMOD=0x51; // T1 外部計數
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
EA=1;
ET0=1; //開定時器0中斷
ET1=1; //開定時器1中斷
TR0=1; //啟動定時器0
TR1=1; //啟動定時器1
while(1)
{
ejjc();
if(s0==1 && s1==1)
{
s0=0;s1=0;
for(i=0;i<8;i++)
{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }
}
}
}
void timer0() interrupt 1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
P0=0xff;
switch(t)
{
case 0: P2=LED7Code[ledx[0]]; P0=0xfe;break;
case 1: P2=LED7Code[ledx[1]]; P0=0xfd;break;
case 2: P2=LED7Code[ledx[2]]; P0=0xfb;break;
case 3: P2=LED7Code[ledx[3]]; P0=0xf7;break;
case 4: P2=LED7Code[ledx[4]]; P0=0xef;break;
case 5: P2=LED7Code[ledx[5]]; P0=0xdf;break;
case 6: P2=LED7Code[ledx[6]]; P0=0xbf;break;
case 7: P2=LED7Code[ledx[7]]; P0=0x7f;break;
}
t++;
if(t==8) t=0;
}
❼ 合泰單片機匯編問題
sdz
的意思
如果(COUNT1-1)等於0,那麼跳過緊跟著下面的那條指令.不等於0,則正常執行下一條,指令數據手冊裡面有介紹的.
數據段,表示是變數,程序段表示是常量rom,程序代碼存在裡面.
proc是定義子程序的偽指令,它和endp
分別表示子程序定義的開始和結束兩者必須成對出現。
❽ 合泰單片機引腳定義,如圖,這是什麼鬼定義方式為嘛不直接用 這種PA^0格式定義呢
這是宏定義,只是一種別名而已,用前面的名字代替後面的名字,也可以用你說的方式定義的
❾ 合泰單片機內置eeprom只能讀不能寫,要怎麼解決
我也遇到這樣的問題。沒人給出答案,我來說一下吧。(主要是針對V3編譯C)
根據Holtek_C_Compiler_V3_FAQ(950).pdf的描述,V3不保證編譯後的指令符合EEPROM寫入順序。根據BS86的數據手冊,WREN 和 WR一定要符合順序。
我編譯後的指令出現的是LSET WREN以及LSET WR,這個就出問題了。晶元需要的是SET。
解決方法是根據官方FAQ的描述
"5.5 對於寫 EEPROM 有限制的 MCU ( 需連續 set wren, wr, flag),如何使用
V3 寫 EEPROM?"
下面是代碼
//RefertoHoltek_C_Compiler_V3_FAQ(950).pdf
typedefstruct{
unsignedcharbit0:1;
unsignedcharbit1:1;
unsignedcharbit2:1;
unsignedcharbit3:1;
unsignedcharbit4:1;
unsignedcharbit5:1;
unsignedcharbit6:1;
}iar_bits;
DEFINE_SFR(iar_bits,iar1,0x02);
#defineiar1_3 iar1.bit3
#defineiar1_2 iar1.bit2
#defineiar1_1 iar1.bit1
#defineiar1_0 iar1.bit0
...
uint8_tbkup;
_eea=u8Addr;
_eed=u8NewData;
_mp1l=0x40;
bkup=_mp1h;
_mp1h=0x01;
_emi=0;
iar1_3=1;
iar1_2=1;
_emi=1;
while(iar1_2)
{
}
_iar1=0;
_mp1h=bkup;
...
官方的解決方案產生的代碼跟數據手冊中的一直:
;129 iar1_3=1;
0D0D 3182 set__iar1[0].3《《以前這里是LSETWREN
;130 iar1_2=1;
0D0E 3102 set__iar1[0].2《《以前這里是LSETWR
❿ 合泰單片機HT67F系列的使用問題
1,寄存器名與手冊對不上號是很正常的,不光合泰的單片機有這種情況,其它的單片機也有這種情況,出現這種情況程序編譯是通不過的。所以有時候要關心一下頭文件,以頭文件的器存器命名為准,或自己更改頭文件。
2,關於管腳復用問題。一般情況下不對管腳進行配置默認都是普通IO,但是如果要使用管腳的其它功能,在使用前就要先對相關寄存器進行配置,比如要使用AN1就要先配置好AD轉換相關的寄存器,如:ADR、ADRL、ADRH、ADCR、ACSR寄存器。