欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于STC15W204S單片機的計數器
[打印本頁]
作者:
qq4113787
時間:
2023-2-19 18:08
標題:
關于STC15W204S單片機的計數器
本人不才,以前的時候學過stc51單片機,用過定時器0和定時器1的方式0模式,在51單片機里是設置TMOD 基本就是設置選擇哪個定時器 哪個模式,然后就是定時器賦值,然后再開啟定時器,開啟總中斷。然后就寫主程序和中斷程序
今天到手了一個stc15w204s的單片機,查了手冊的時候才發現只有定時器0和定時器2,定時器0是內部計時,定時器2是可計時可計數(P3.2)然后找了一頓也沒看懂 貌似T0設置TMOD T2設置AUXR
但是網上沒有找到類似的文章,而且我用了定時器0號選擇內部1秒中斷 發現已經對AUXR賦值了 也沒搞懂為什么要這樣寫 AUXR &= 0x7F; 直接寫AUXR = 0x7F;不可以嗎
想請各位大佬幫忙解決一下,大概意思就是 用定時器t0獲得一個一秒的中斷 用T2做計數器 用來獲得外部脈沖進行測速(每秒一轉)
作者:
405616736
時間:
2023-2-20 02:32
void main()
{
P0M0=0x00;P0M1=0x00;
P1M0=0x00;P1M1=0x00;
P2M0=0x00;P2M1=0x00;
P3M0=0x00;P3M1=0x00;
P4M0=0x00;P4M1=0x00;
P5M0=0x00;P5M1=0x00;
P6M0=0x00;P6M1=0x00;
P7M0=0x00;P7M1=0x00;
AUXR &= 0x7F; //定時器時鐘12T模式
TMOD &= 0xF0; //設置定時器模式
TL0=0xB0; //設置定時初始值,50毫秒@12.000MHz
TH0=0x3C; //設置定時初始值,50毫秒@12.000MHz
TF0=0; //清除TF0標志
TR0=1; //定時器0開始計時
ET0=1; //使能定時器0中斷
AUXR |= 0x04; //定時器2為1T模式
AUXR |= 0x08; //T2_C/T=1, T2(P3.1)引腳為時鐘源
T2H=T2L=0xff; //初始化計時值
AUXR |= 0x10; //定時器2開始計時
IE2 |= 0x04; //開定時器2中斷
EA=1;
while (1);
}
void tm0_isr() interrupt 1
{
static unsigned char count,counts;
if(count++==20) //50ms*20 → 1s
{
//1秒定時
}
}
void t2int() interrupt 12 //中斷入口
{
//計數器
}
作者:
coody_sz
時間:
2023-2-20 10:12
樓主是否看錯資料?
1、定時/計數器0和2都可以定時或對外計數,對外計數時定時器0從P1.2輸入脈沖,定時器2從P3.1輸入脈沖。
2、沒搞懂為什么要這樣寫 AUXR &= 0x7F; 直接寫AUXR = 0x7F;不可以嗎 ?
樓主可能很少編程,這是標準做法。
AUXR &= 0x7F 是對AUXR的bit7請0,其余位不變。
AUXR = 0x7F 是將bit7寫入0,其余位寫入1,跟上面的操作差別很大的。重新看看C語言吧。
3、用定時器t0獲得一個一秒的中斷 用T2做計數器 來測速。
對于一圈一個脈沖的,這種方法很慢,誤差也很大,一般用測周期的方式計算轉速。
如果是300線以上的同軸編碼器則可以。
作者:
wufa1986
時間:
2023-2-21 09:59
打開STC下載軟件,找到對應型號,點開右邊的范例程序,里面基本所有外設操作都有,整合的時候注意共用的寄存器操作即可
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1