導航:首頁 > 操作系統 > 設單片機

設單片機

發布時間:2022-02-01 12:28:47

『壹』 設單片機晶振頻率為12MHZ,編寫出其延時100毫秒的程序

最好直接利用定時器延時,定時1毫秒,程序中調用延時函數就行了,Delay(100):
uint count; //定義外部變數
Delay( uint k) // 延時函數
{ count = k;
while(count!=0) ;
}
TIME0() interrupt 1 // 定時器0中斷函數
{ TH0 = 0XFC;
TL0 = 0X18;
count--;
}

『貳』 單片機編程 設單片機的晶振頻率為12MHZ,請編出利用定時/計數器T0,使之工作在方式1,產生50ms定時,

#include"reg52.h"
#define uchar unsigned char
sbit Wave=P1^0;
void Timer0() interrupt 1
{
static uchar t50ms;
TL0=0xb0;
TH0=0x3c;
t50ms=++t50ms%20;
if(!t50ms) Wave=~Wave;
}
void TimerInit()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
EA=1;
ET0=1;
}
void main()
{
TimerInit();
while(1);
}
直接打的,沒進行編譯,希望不會錯。

『叄』 設單片機的晶振頻率為6MHz,編程用定時器T0,在P1.0產生一個50Hz的方波。

f=50Hz,T=0.02s=20ms,所以每10ms中斷一次,P1.0取反若選用工作方式1,則計數初值為EC78H ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt;定時器中斷START:
MOV SP,#60H SETB P1.0
LCALL InitTimer0LOOP: NOP
;這可以加另外的代碼 LJMP LOOPInitTimer0://定時器初始化
MOV TMOD,#01H
MOV TH0,#0ECH
MOV TL0,#78H
SETB EA
SETB ET0
SETB TR0
RETTimer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0ECH
MOV TL0,#78H
CPL P1.0;輸出方波
POP ACC
POP DPL
POP DPH
RETIEND

『肆』 設單片機系統的時鍾頻率為12MHz利用定時器T0(任選工作方式),編寫一個完整的C51程序使P1.6和P1

12Mhz的51單片機,經過12分頻後為1MHz,則一個指令周期為1/1Mhz = 1us. 使能定時器 2 使能定時器中斷 3 編寫中斷程序我估計你是覺得1秒的時間,

『伍』 單片機設計

看了上邊的對話,挺有意思的。有能力就自己做,想讓別人做就花點錢,碼程序300起步多正常。

『陸』 設單片機的fosc=12MHz.使P1.0和P1.1分別輸出周期為1ms和10 ms的方波.請用定時器T0的方式2實現

周期為 1ms 和 10ms,最短 半周期為 0.5ms ①,
晶振12MHz,機械周期為T=12/Fosc=1us,定時器工作方式2 為 8位自重裝模式,最大計數為255,時間為255×1us=255us=0.255ms,為符合①需求,選擇 0.25ms,定時器初值 = 2^8-0.25ms/1us=6;

/***雙路方波發生器——火柴天堂作品-20130616***/
/***默認硬體環境:51單片機,12MHz晶振,Wave0、Wave1雙路方波輸出***/
/***功能描述:P10輸出1KHz方波,P11輸出100Hz方波***/
#include"reg52.h" //包含52系列頭文件
#define uchar unsigned char //定義 無符號字元型
#define uint unsigned int //定義 無符號整型
#define tl0 0x06 //0.25ms at 12MHz Fosc in Model 2
sbit Wave0=P1^0;
sbit Wave1=P1^1;
#define Wave0_HalfCycleAt250us 2 //方波0 半周期時間t=0.25ms×2=0.5ms,周期T=2t=1ms
#define Wave1_HalfCycleAt250us 20 //方波1 半周期時間t=0.25ms×20=5ms,周期T=2t=10ms
void Timer0() interrupt 1 //定時器T0 中斷 函數
{
static uchar t0=0,t1=0; //定義靜態變數
t0=++t0%Wave0_HalfCycleAt250us; //該句等效於:t0++;t0%=Wave0_HalfCycleAt250us;
if(!t0)Wave0=~Wave0; //方波輸出,半周期為0.5ms,周期為1ms
t1=++t1%Wave1_HalfCycleAt250us; //該句等效於:t1++;t1%=Wave1_HalfCycleAt250us;
if(!t1) Wave1=~Wave1; //每隔5ms卻換一次電平
}
void TimerInit() //定時器初始化 函數
{
TMOD=0x02; //T0 8位定時器
EA=1; //允許系統中斷
ET0=1; //允許T0中斷
TH0=tl0;
TL0=tl0;
TR0=1; //T0開始計時
}
void main()
{
TimerInit();
while(1);
}

『柒』 設單片機晶振頻率12mhz,使用定時器1以工作方式1產生周期為100ms的等寬方

假設用P1.1輸出,程序如下:
#include<reg52.h>
//主程序
void main()
{
TMOD=0x10;// 定時器1工作方式一
ET1=1;
EA=1;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
while(1);
}
//中斷子程序
void Timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
P1^1=~P1^1;
}

『捌』 設單片機的晶振為6MHz,要求用T0定時150us,分別計算採用定時方式0,定時方式1時的初始值

void Timer0Init(void)//150微秒@12.000MHz { AUXR |= 0x80;//定時器時鍾1T模式 TMOD &= 0xF0;//設置定時器模式 TL0 = 0xF8;//設置定時初值 TH0 = 0xF8;//設置定時...

『玖』 設單片機fosc=12MHz,利用T0方式1產生10ms定時,在P1.0引腳上輸出周期為2ms的方波。

1、你的思路和程序都有問題
2、如果你想在P1.0引腳上輸出周期為2ms的方波,T0定時中斷應該定在1ms,然後再中斷程序中對P1.0取反,每個1ms對P1.0取反一次,就得出周期為2ms的方波。
3、如果是定時10ms,計數器初值應該是D8F0H,而不是6318H
MOV TH0,#D8H
MOV TL0,#F0H

4、MOV R1,#500指令是非法的,R1是8位寄存器,最大賦值為255。

『拾』 設單片機8051的時鍾頻率為MHZ,試編寫50ms的軟體延時程序。

12MHZ就是一個指令周期是(即1s/(12*1000*1000HZ))=1/1.2us,所以,可以通過定時器來實現,設置定時器的計數為65536-(50*1200)即可:TL1=0x15; TH1=0xa0;

閱讀全文

與設單片機相關的資料

熱點內容
線性代數輔導pdf 瀏覽:991
貴州戴爾伺服器創新服務雲主機 瀏覽:557
如何在小米電視上安裝電視家app 瀏覽:182
蘋果手機如何隱藏單個app軟體 瀏覽:963
多路伺服器有什麼用 瀏覽:859
如何找培訓班app 瀏覽:580
臨時文件夾怎麼轉到其他盤 瀏覽:179
android布局按比例 瀏覽:602
安卓模擬器怎麼能當手機用 瀏覽:885
手機怎樣查看伺服器ip地址沖突 瀏覽:812
程序員有沒有必要找家教 瀏覽:783
什麼編譯器可以帶c11函數 瀏覽:18
如何理解程序員對自己電腦的感情 瀏覽:525
什麼是簡訊app 瀏覽:752
我的世界伺服器啟動器下載地址 瀏覽:790
雲伺服器公ip和內ip 瀏覽:948
手機淘寶app授權在哪裡 瀏覽:472
匯編程序的任務 瀏覽:973
dji編程玩具 瀏覽:21
dcs伺服器異常現象是什麼 瀏覽:201