「シングルチップマイクロコンピュータ」実験-実験3MCS-51内部タイマー/カウンター実験(1)

「シングルチップマイクロコンピュータ」実験-実験3MCS-51内部タイマー/カウンター実験(1)

1.実験の目的

  1. タイマー/カウンターの4つの動作モードの動作特性とアプリケーションを習得する
  2. 長期間のタイミングの実現方法をマスターする
  3. クエリ制御のタイマー/カウンタープログラミングをマスターする

2.実験内容

  1. 知識ポイント
    (1)8051内には2つのタイマー/カウンターT0とT1があり、どちらもシステム内のマシンサイクル(タイミングモード)とチップ外のパルス信号(カウントモード)をカウントできます。4つの動作モードがあります。 、違いは、カウント値の幅(13ビット/ 16ビット/ 8ビット)と、カウントの初期値を自動的にリロードできるかどうかにあります。
    (2)タイマ/カウンタに関連する制御ワードと制御ビットには、主にTMOD、TH0 / TH1、TL0 / TL1、TCONが含まれます。
    (3)シングルチップ水晶発振器の周波数は6MHzです。
  2. 実験内容
    (1)8051タイマー/カウンターコントロールを使用して、ポートP1に接続されているすべてのLEDを点灯させます。照明サイクルは自己設計する必要があります。(達成するにはモード0を使用します)
#include<reg51.h>
char t;
char i=0;
void main(){
    
    
	char led[]={
    
    0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
	TMOD=0x01;
	TH0=0x3C;
	TL0=0xB0;
    TR0=1;
while(1){
    
    
    if(TF0){
    
    
		i=i%8;
		TF0=0;
		t++;
		if(t%20==0){
    
    		
			P1=led[i];
			i++;
			TH0=0x3C;
			TL0=0xB0;
		 }
	 }
 }
}

(2)8051カウンタを使用して外部パルスをカウントし、P1ポートを介してカウント時間を出力します。

#include<reg51.h>
int t=0;
void main(){
    
    
	TMOD=0x05;
	TH0=0xff;
	TL0=0xff;
	TR0=1;
	EA=1;
	ET0=1;
	while(1);
}

timer() interrupt 1{
    
    
	t++;
	P1=~t;
	TH0=0xff;
	TL0=0xff;
	TF0=0;
}

上記の2つの質問は回路図を共有しています
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_44652589/article/details/114692476