當前位置:首頁 » 編程語言 » c語言t0

c語言t0

發布時間: 2022-09-05 20:15:14

① 單片機c語言編程問題,功能是用定時器T0使發光管間隔200ms閃爍,定時器T1使數碼管循環顯示0-59.

……
num2++;
if(num2==20)
{
num2=0;//少了這句,num2會持續增長,長到255後,才變成0。
……

num2:0~255,只有在=20時,數字才加一。
那麼,就是約12.5秒,數字才加一。

② 用52單片機C語言編寫程序,實現00~59計時。要求用T0,工作方式1。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6; //段選
sbit wela=P2^7; //位選
uchar shi,ge,num1,num2; //變數
uchar code table[]={0x3f,0x06,0x5b,0x4f, //共陰極字型碼
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x) //延時子程序
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
TMOD=0x01; //設置定時器0的工作方式
TH0=(65536-50000)/256; //裝初值
TL0=(65536-50000)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
}
void display() //顯示子程序
{
la=1;
P0=table[ge]; //送段選數據
la=0;
P0=0xff; //送位選數據前關閉所有顯示
wela=1;
P0=0xfe; //送位選數據
wela=0;
delay(5); //延時

la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void main()
{
init();
while(1)
{
display();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重裝初值
TL0=(65536-50000)%256;
num1++;
if(num1==20) //到了20次,1秒時間到
{
num1=0; //清0重新計數
num2++;
if(num2==60)
num2=0;
P1=0x00;
delay(500);
P1=0xff;
shi=num2/10; //把一個2位數分離後分別送數碼管顯示
ge=num2%10; //十位和個位
}
}

試了的,可以放心,採納吧!

③ C語言實現單片機計數器T0計數值的讀取

當然是了,如果是16進制就乘以0xFF了,這里是256得到的就是十進制,而且TH0以及TL0也必須是十進制
不管是什麼進制,只要表達的數一樣就行,進制不是問題

④ c語言中,T0與T1的中斷信號分別是多少

C語言中,定時器T0和T1要產生中斷的話,需要初始化比如:
init()
{
TMOD=0x11
TH0=TH1=(65536-10000)/256
TL0=TL1=(65536-10000)%256;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
EA=1;
}
之後中斷號分別為:
T0:
voidt0isr()interrupt1
{...........}
T1:
voidt1isr()interrupt3
{............}

⑤ 關於單片機C語言的定時器T0,T1的問題

一般向上計數的單片機定時器,都是從當前值開始計數,一直計數到0xffff(65535)的時候,再來一個脈沖就產生溢出,所以初值一般都是用0x10000減去需要計數的值得來的,0x10000就等於十進制的65536

⑥ 編寫程序,定時計數器T0,方式2定時,在P1.0輸出周期是400us,占空比為10;1的矩形脈沖。C語言編程

在等於2的地方少一個=吧。
因為在一個周期里首先需要一個高電平,之後變成低電平。之後不再變化。
初始值為0,當cnt==1時p1.0求反得高電平。
在cnt==2時再求反得低電平,之後不再變化

⑦ 求單片機c語言高手 我用定時器T0 方式1 讓數碼管每隔1s變一個數字,不知哪出問題了如下:

for(j=0;j<10;j++)
P1=num[j];

不能這樣,可以改成
j++;
P1=num[j];

⑧ 單片機c語言編程t0輸入脈沖LCD顯示計數

#include#defineuintunsignedintuintnum,num1;voidmain(){TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);}voidtime_t0interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;if(num==設定時間為50ms的整數倍){TR0=0;返回數;}}

⑨ 51單片機使用T0和T1外部脈沖計數,C語言如何編程

1、使用T0和T1外部脈沖計數,控制兩個電機,到1700個脈沖電機停止,
--統計脈沖個數,用外部中斷更好。
--T0和T1,留著定時用。
用四個按鍵控制,按鍵1控制電機正轉,按鍵2控制電機反轉,按鍵3控制電機1正轉,按鍵4控制電機2正轉。


2、常式:

#include<reg51.h>
sbitk1=?;//自己定義
sbitk2=?
sbitk3=?
sbitk4=?
sbitDIAN1=?
sbitDIAN2=?
sbitDIAN3=?
sbitDIAN4=?
sbitSEN1=?
sbitSEN2=?
voiddelay(unsignedintx)
{
unsignedintm,n;
for(m=x;m>0;m--)for(n=115;n>0;n--);
}
voidmain(void)
{
TMOD=0x55;
IE=0x8a;
while(1){
if(!k1){
delay(10);
if(!k1){
while(!k1);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=0;DIAN2=1;
SEN1=1;
TR0=1;
}
}
if(!k2){
delay(10);
if(!k2){
while(!k2);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=1;DIAN2=0;
SEN1=1;
TR0=1;
}
}
if(!k3){
delay(10);
if(!k3){
while(!k3);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=0;DIAN4=1;
SEN2=1;
TR1=1;
}
}
if(!k4){
delay(10);
if(!k4){
while(!k4);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=1;DIAN4=0;
SEN2=1;
TR1=1;
}
}
}
}

⑩ 求一個51單片機用T0做計數器的C語言代碼。

//timer0設定為計數器模式1
TMOD &= 0xf0; //清除原來的設定
TMOD |= 0x05; //T0為計數器模式1
TH0 = 0;
TL0 = 0; //從0開始計數
TR0 = 1; //使能T/C0
// IE |= 0x82; //Timer0中斷使能,不需要就注釋掉該行
另外執行不了有可能是你的實驗板沒有連接T0引腳

熱點內容
編程自學入門教程 發布:2024-10-18 13:50:58 瀏覽:141
伊迪阿明訪問中國 發布:2024-10-18 13:49:54 瀏覽:10
人三琳外傳腳本 發布:2024-10-18 13:38:16 瀏覽:839
電腦發件箱伺服器錯誤怎麼弄 發布:2024-10-18 13:30:36 瀏覽:914
evm部署solc編譯文件 發布:2024-10-18 13:29:47 瀏覽:835
android發送at指令 發布:2024-10-18 13:14:18 瀏覽:659
安卓手機哪個工藝最好 發布:2024-10-18 13:01:43 瀏覽:283
源程序編譯過程中裝配器 發布:2024-10-18 13:01:43 瀏覽:118
如何查詢伺服器的序列號 發布:2024-10-18 12:57:04 瀏覽:670
鑽石腳本 發布:2024-10-18 12:56:59 瀏覽:852