找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1625|回復(fù): 3
收起左側(cè)

關(guān)于STC15W204S單片機(jī)的計(jì)數(shù)器

[復(fù)制鏈接]
ID:387938 發(fā)表于 2023-2-19 18:08 | 顯示全部樓層 |閱讀模式
本人不才,以前的時(shí)候?qū)W過stc51單片機(jī),用過定時(shí)器0和定時(shí)器1的方式0模式,在51單片機(jī)里是設(shè)置TMOD  基本就是設(shè)置選擇哪個(gè)定時(shí)器  哪個(gè)模式,然后就是定時(shí)器賦值,然后再開啟定時(shí)器,開啟總中斷。然后就寫主程序和中斷程序


今天到手了一個(gè)stc15w204s的單片機(jī),查了手冊的時(shí)候才發(fā)現(xiàn)只有定時(shí)器0和定時(shí)器2,定時(shí)器0是內(nèi)部計(jì)時(shí),定時(shí)器2是可計(jì)時(shí)可計(jì)數(shù)(P3.2)然后找了一頓也沒看懂  貌似T0設(shè)置TMOD  T2設(shè)置AUXR


但是網(wǎng)上沒有找到類似的文章,而且我用了定時(shí)器0號選擇內(nèi)部1秒中斷  發(fā)現(xiàn)已經(jīng)對AUXR賦值了 也沒搞懂為什么要這樣寫 AUXR &= 0x7F;  直接寫AUXR = 0x7F;不可以嗎  



想請各位大佬幫忙解決一下,大概意思就是 用定時(shí)器t0獲得一個(gè)一秒的中斷  用T2做計(jì)數(shù)器  用來獲得外部脈沖進(jìn)行測速(每秒一轉(zhuǎn))   


回復(fù)

使用道具 舉報(bào)

ID:579397 發(fā)表于 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;        //定時(shí)器時(shí)鐘12T模式
TMOD &= 0xF0;        //設(shè)置定時(shí)器模式
TL0=0xB0;        //設(shè)置定時(shí)初始值,50毫秒@12.000MHz
TH0=0x3C;        //設(shè)置定時(shí)初始值,50毫秒@12.000MHz
TF0=0;        //清除TF0標(biāo)志
TR0=1;        //定時(shí)器0開始計(jì)時(shí)
ET0=1;  //使能定時(shí)器0中斷
AUXR |= 0x04;  //定時(shí)器2為1T模式
AUXR |= 0x08;  //T2_C/T=1, T2(P3.1)引腳為時(shí)鐘源
T2H=T2L=0xff;  //初始化計(jì)時(shí)值
AUXR |= 0x10;  //定時(shí)器2開始計(jì)時(shí)
IE2 |= 0x04;  //開定時(shí)器2中斷
EA=1;
while (1);
}

void tm0_isr() interrupt 1
{
static unsigned char count,counts;
if(count++==20)        //50ms*20 → 1s
{
//1秒定時(shí)
}
}

void t2int() interrupt 12  //中斷入口
{
//計(jì)數(shù)器
}
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2023-2-20 10:12 | 顯示全部樓層
樓主是否看錯(cuò)資料?

1、定時(shí)/計(jì)數(shù)器0和2都可以定時(shí)或?qū)ν庥?jì)數(shù),對外計(jì)數(shù)時(shí)定時(shí)器0從P1.2輸入脈沖,定時(shí)器2從P3.1輸入脈沖。

2、沒搞懂為什么要這樣寫 AUXR &= 0x7F;  直接寫AUXR = 0x7F;不可以嗎 ?
    樓主可能很少編程,這是標(biāo)準(zhǔn)做法。
    AUXR &= 0x7F 是對AUXR的bit7請0,其余位不變。
    AUXR = 0x7F   是將bit7寫入0,其余位寫入1,跟上面的操作差別很大的。重新看看C語言吧。

3、用定時(shí)器t0獲得一個(gè)一秒的中斷  用T2做計(jì)數(shù)器 來測速。
     對于一圈一個(gè)脈沖的,這種方法很慢,誤差也很大,一般用測周期的方式計(jì)算轉(zhuǎn)速。
     如果是300線以上的同軸編碼器則可以。
回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2023-2-21 09:59 | 顯示全部樓層
打開STC下載軟件,找到對應(yīng)型號,點(diǎn)開右邊的范例程序,里面基本所有外設(shè)操作都有,整合的時(shí)候注意共用的寄存器操作即可
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表