導航:首頁 > 操作系統 > 單片機方波程序

單片機方波程序

發布時間:2022-02-08 22:48:20

① 求高手 用51單片機輸出產生方波的程序

#include"reg52.h"
sbit PWM=P1^0;//定義輸出腳
void main()
{
TMOD=0x01; //定時器0工作方式1
TH0=(65536-10000)/256; //12M晶振10MS計時常數
TL0=(65536-10000)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
while(1);

}
//中斷函數,啟動後每10MS進入一次中斷
void T0_time(void) interrupt 1
{
TH0=(65536-10000)/256; //12M晶振10MS計時常數
TL0=(65536-10000)%256;
if(PWM)PWM=0; //輸出腳取反
else PWM=1;
}

② 單片機方波

很明顯這位大哥是想做一個頻率計模式的東西嘛,想把測量出來的方波頻率在數碼管上顯示出來。
首先肯定是要測量頻率,然後就如同一樓大哥所說的那樣,把數字用對應的查找表寫在單片機中,一旦算出頻率,對應查找表找出數字,顯示在數碼管上就行了,OVER,SO EASY!呵呵!

③ 編寫51單片機程序,方波程序,at89s52的單片機

以下程序模擬成功,你試試看。

#include <reg52.h>
#define uchar unsigned char
#define TL_0SET (256 - 25)

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;

sbit P1_6=P1^6;
sbit P1_7=P1^7;

bdata uchar x=0;
sbit p16=x^0;
sbit p17=x^1;
sbit flag=x^2;

uchar i, j;

void e0int() interrupt 0 //用外部中斷0作控制開關,控制四選一數據選擇器的輸出
{
x++;
if(x == 4) x = 0;
P1_7 = p16;
P1_6 = p17;
}

void time0() interrupt 1
{
//T0定時25us,T0的中斷服務程序
TL0 = TL_0SET + 8;//加8,是對程序做一個誤差補償,因為從進入定時中斷,到執行中斷里的第一句程序,是有時間間隔的,在此做一個誤差補償
i++;
P1 = i;
P1_7 = p16;
P1_6 = p17;
}

void main()
{
TR0 = 0;
TMOD = 0x02;
TL0 = TL_0SET;
TR0 = 1; //T0定時器開始工作
ET0 = 1;
EX0 = 1;//外部中斷0允許
IT0 = 1;//外部中斷0由下降沿觸發
EA = 1;

P1_0 = 0;
P1_1 = 0;
P1_2 = 0;
P1_3 = 0;
flag = 0;

while(1) {;}
}

④ 單片機產生方波程序

50ms定時中斷,計10次,即0.5s。每0.5s,P1.0求反一次,即為所要求的方波

⑤ 單片機匯編程序,生成方波

下面只附12M晶振的,波形口驅動口在P1.0,
6M的自己參照改吧,修改定時器配置寄存器和計數值。
ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt
START:
MOV SP,#60H
LCALL InitTimer0
LOOP:
;add your code here!
LJMP LOOP
InitTimer0:
MOV TMOD,#02H
MOV TH0,#00H
MOV TL0,#9CH ;100us中斷初值
SETB EA
SETB ET0
SETB TR0
RET
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
;========================
CPL P1.0
;========================
POP ACC
POP DPL
POP DPH
RETI
END

⑥ 解讀下面程序(實現單片機輸出方波的程序)

ORG 0000H //匯編偽指令,定義復位地址
RESET: LJMP MAIN //標號:長跳轉到MAIN標號地址

ORG 000BH//匯編偽指令,定義定時器0中斷服務地址
AJMP IT0P//跳轉到定時器0中斷服務程序

ORG OO1BH//匯編偽指令,定義定時器1中斷服務地址
AJMP IT1P//跳轉到定時器1中斷服務程序

ORG 0100H//匯編偽指令,定義MAIN標號地址
MAIN: MOV SP, #60H//標號:堆棧初始化
ACALL PT0M2//調用PT0M2子程序

LOOP: MOV C, P1.1//標號:暫存P1.1狀態
JNC LOOP //如果P1.1 不等於1跳轉回標號LOOP
SETB TR1 //開定時器1
SETB ET1 //使能定時器1

HERE: AJMP HERE //Ljmp $ 死循環

PT0M2: MOV TMOD,#25 //標號PT0M2子程序
MOV TL0,#0FFH //定時器0賦初值
MOV TH0,#0FFH
SETB TR0 //開定時器0
SETB ET0 //使能定時器0
MOV TL1,#06H //定時器1賦初值
MOV TH1,#06H
CLR P1.1 //P1.1埠清零
SETB EA //使能全局中斷
RET //子程序返回

IT0P: CLR TR0 //定時器0中斷服務程序,關定時器0
SETB P1.1 //P1.1置位
RETI //中斷返回

IT1P: CPL P1.0 //定時器1中斷服務程序,P1.1清零
RETI //中斷返回

⑦ 51單片機匯編程序編寫方波輸出程序

ORG 0000H
LJMP START
ORG 001BH
LJMP Timer1Interrupt

START:
MOV SP,#60H
LCALL InitTimer1

LOOP:
;主循環 添加其他代碼
LJMP LOOP

InitTimer1:
MOV TMOD,#10H
MOV TH1,#9EH
MOV TL1,#58H
SETB EA
SETB ET1
SETB TR1
RET

Timer1Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH1,#9EH
MOV TL1,#58H

CPL P1.1//對P1.1進行取反

POP ACC
POP DPL
POP DPH
RETI

END

⑧ 單片機輸出方波程序

單片機只能一個IO口輸出PWM,如果要兩個的話出來的PWM是不完整的。我有一個PWM輸出,按鍵可調頻率的程序,不知你要不要。

⑨ 〖急〗89c51單片機,編寫方波的c語言程序

還是沒太看懂,關於按鍵檢測你可以這樣編寫
if(!key)//檢測按鍵被按下
{
delay(2);//消抖
if(!key);//確認按鍵被按下
while(!key)//等待鬆手
{
//這里編寫按鍵被長時間按下的函數
}
}

閱讀全文

與單片機方波程序相關的資料

熱點內容
裘錫圭pdf 瀏覽:726
android模擬器調試 瀏覽:135
sap命令大全 瀏覽:293
mysql導出數據命令 瀏覽:951
文件夾隱藏了出不來 瀏覽:562
電信網上大學源碼 瀏覽:204
rr輪轉調度演算法 瀏覽:253
我的世界無法登入伺服器怎麼辦 瀏覽:148
文件加密授權特定隱藏訪問控制 瀏覽:801
程序員劍靈官網 瀏覽:516
php調用static方法 瀏覽:934
天正命令版 瀏覽:86
聚合支付加密幣 瀏覽:313
蜜源app是什麼時候創立的 瀏覽:707
計算機專業學51單片機 瀏覽:211
程序員不接受反駁 瀏覽:299
微軟自帶的壓縮軟體 瀏覽:290
中國玩家在日本伺服器做什麼 瀏覽:51
12864和單片機 瀏覽:899
25匹空調壓縮機 瀏覽:649