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

設單片機

發布時間: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;

閱讀全文

與設單片機相關的資料

熱點內容
伺服器藍色什麼意思 瀏覽:226
vb組態軟體源碼 瀏覽:698
加密蚊帳防蚊門簾 瀏覽:828
vs2010多線程編程 瀏覽:214
新股上市指標源碼 瀏覽:698
c語言51單片機教程 瀏覽:554
app中的hd是什麼意思 瀏覽:279
手機什麼解壓器最好 瀏覽:49
什麼是適合自己的app 瀏覽:451
雲伺服器怎麼補漏洞 瀏覽:176
如何看自己的安卓是什麼等級 瀏覽:633
被丁磊挖走的程序員 瀏覽:19
gsk980ta編程 瀏覽:507
單片機離線 瀏覽:84
解壓助眠敲擊外國長指甲 瀏覽:421
3次元編程 瀏覽:803
夫妻傳送英文命令 瀏覽:316
程序員題代做 瀏覽:950
戴爾伺服器怎麼擴大內存 瀏覽:641
解壓包密碼消失 瀏覽:135