欧美极品高清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