MCS-51单片机时钟为12MHz,利用定时器T0编程令P1.0引脚输出2ms的矩形波程序,要求占空比系数为1:2。 msc51单片机:利用定时器T0编出使p1.0引脚输出2ms...
\u8bbeMCS-51\u5355\u7247\u673a\u65f6\u949f\u4e3a12MHz,\u5229\u7528\u5b9a\u65f6\u5668T0\u7f16\u8f91\u4ee4P1.0\u5f15\u811a\u8f93\u51fa2ms\u5f97\u77e9\u5f62\u6ce2\u7a0b\u5e8f,\u8981\u6c42#include
#define OUT P1_0
void InitT0(void)
{
TMOD = 1;
TH0=(65536-1000)/256; //\u673a\u5668\u5468\u671f1us 1000us=1ms
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
EA=1;
}
void main(void)
{
InitT0();//\u521d\u59cb\u5316\u5b9a\u65f6\u5668
while(1);
}
void Timer0Interrupt(void) interrupt 1 //\u6bcf1ms\u4e2d\u65ad\u4e00\u6b21
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
OUT=~OUT; //2ms\u5468\u671f\u65b9\u6ce250%\u5360\u7a7a\u6bd4
}
2ms\u5927\u6982\u662f\u5468\u671f\u3002
\u90a3\u4e48\u6309\u7167\u8981\u6c42\uff0c\u662f\u8f93\u51fa\u9ad8\u7535\u5e73500\u5fae\u79d2\u3001\u8f93\u51fa\u4f4e\u7535\u5e731500\u5fae\u79d2\u3002
\u4ee4T0\u5b9a\u65f6500\u5fae\u79d2\uff0c\u5728\u4e2d\u65ad\u7a0b\u5e8f\u91cc\u9762\uff0c\u63a7\u5236\u8f93\u51fa\u3002
;\u4e0b\u5217\u7a0b\u5e8f\uff0c\u7ecf\u8fc7\u7f16\u8bd1\u3001\u4eff\u771f\uff0c\u7b26\u5408\u8981\u6c42\u3002
;-------------------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP T0_INT
;-------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #(65536-500)/256
MOV TL0, #(65536-500) MOD 256 ;500us@12MHz
SETB TR0
SETB ET0
SETB EA
CLR P1.0
MOV R2, #3 ;\u8f93\u51fa3\u4e2a500us\u7684\u4f4e\u7535\u5e73
SJMP $
;-------------------------------------
T0_INT:
MOV TH0, #(65536-500)/256
MOV TL0, #(65536-500) MOD 256 ;500us@12MHz
CLR P1.0
DJNZ R2, T0_END
SETB P1.0
MOV R2, #4
T0_END:
RETI
;-------------------------------------
END
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#02H
MOV TH0,#246
MOV TL0,#246
SETB TR0
SETB ET0
SETB EA
SETB P1.0
CLR A
SJMP $
T0ISR:
INC A
CJNE A,#67,T01
T01:
JC T02
CLR P1.0
CJNE A,#200,T03
T03:
JC T0E
CLR A
T0E:
RETI
T02:
SETB P1.0
RETI
END
2ms是高电平时间还是低电平时间的
绛旓細妤间富锛1锛屼綘棣栧厛瑕佺煡閬擄細T0,閲囩敤宸ヤ綔鏂瑰紡2鏈澶у欢杩熸椂闂翠负256us.2,浣犲彲浠ラ氳繃璁$畻鍏紡锛氬垵鍊=256-t*F/12銆倀涓哄畾鏃舵椂闂达紝F灏鏄浣犻夌敤鐨勬櫠浣撻鐜囥3锛屽洜姝わ紝浣犲厛缂栧啓涓涓50us鐨凾0涓柇鍑芥暟锛350US閫氳繃璁剧疆涓涓叏灞鐨勫彉閲忥紝璁╁畾鏃跺櫒T0浜х敓7娆′腑鏂悗娓0,杩欐牱浣犵殑涓や釜寤舵椂閮藉吋椤句簡銆4锛屼綘鍦∕AIN鍑芥暟...
绛旓細C璇█绋嬪簭锛歩nclude void main (void){ TMOD = 0x10;TH1 = (-50000>>8);TL1 = -50000;TCON = 0x40;IE = 0x88;while(1);} void T1_int (void) interrupt 3 { TH1 = (-50000>>8);TL1 = -50000;} 姹囩紪绋嬪簭濡備笅锛歄RG 0000H AJMP MAIN ORG 001BH AJMP T1INT ORG ...
绛旓細鎵浠ワ紝浠ュ埄鐢≧S232鎺ュ彛瀹炵幇FPGA涓庤绠楁満杩涜閫氫俊涓轰緥锛屽叿浣撶殑娉㈢壒鐜鏄鐢辫璁¤呯‘瀹氱殑銆傝鍒╃敤FPGA鐨鏃堕挓婧愬垎棰戝緱鍒颁簡涓涓4800Hz鐨勬椂閽熶俊鍙凤紝璁句綘瑕佷紶杈撶殑鏁版嵁浣嶉暱涓6浣嶏紝鍦ㄥ彂閫佽繖6浣嶆暟鎹墠锛屼綘鍙互涓鐩村彂閫1锛屼互姝ゅ憡璇夎绠楁満浣犺繕娌″彂閫佹湁鏁堢殑鏁版嵁锛岀劧鍚庝綘鍦ㄦ椂閽熶笂鍗囨部鍒版潵鏃跺彂閫0锛屼互姝ゅ憡璇夎绠楁満浣犲氨瑕...
绛旓細閲囩敤12Mhz鏅舵尟鐨51鍗曠墖鏈锛岃蒋浠跺涓嬶紙璋冭瘯閫氳繃锛塱nclude <reg52.h> define PERIODH (65536l-50000l)/0X100 //璁50ms涓柇1娆H1鍒濆 define PERIODL (65536l-50000l)%0X100 //璁50ms涓柇1娆L1鍒濆 //濡傛灉闇瑕佹瀬绮剧‘鐨勫欢鏃讹紝搴旀牴鎹疄闄呯紪璇戝悗鐨勪骇鐢熺殑姹囩紪鎸囦护锛屾墸闄ゆ帀涓柇鍝嶅簲涓噸瑁呮墍鍗犵敤鐨...
绛旓細璁MCS-51鍗曠墖鏈鏅舵尟棰戠巼涓12MHz,瀹氭椂鍣ㄤ綔瀹氭椂浣跨敤鏃,鍏舵渶楂樼殑瀹氭椂鏃堕棿搴斾负锛65.536姣銆
绛旓細鏃堕挓鍛ㄦ湡:鏃堕挓鍛ㄦ湡涔熺О涓烘尟鑽″懆鏈,瀹氫箟涓烘椂閽熻剦鍐茬殑鍊掓暟(鍙互杩欐牱鏉ョ悊瑙,鏃堕挓鍛ㄦ湡灏鏄崟鐗囨満澶栨帴鏅舵尟鐨勫掓暟,渚嬪12M鐨勬櫠鎸,瀹冪殑鏃堕棿鍛ㄦ湡灏辨槸1/12 us),鏄绠楁満涓渶鍩烘湰鐨勩佹渶灏忕殑鏃堕棿鍗曚綅銆 鍦ㄤ竴涓椂閽熷懆鏈熷唴,CPU浠呭畬鎴愪竴涓渶鍩烘湰鐨勫姩浣溿傚浜庢煇绉嶅崟鐗囨満,鑻ラ噰鐢ㄤ簡1MHZ鐨勬椂閽熼鐜,鍒欐椂閽熷懆鏈熶负1us...
绛旓細涓嶇浣跨敤浠涔堝伐浣滄柟寮忛兘鏄彲浠ュ畬鎴愮殑锛岃繖涓彇鍐充簬浣犺缃殑瀹氭椂/璁℃暟鍣ㄧ殑鍒濆笺備笅闈娇鐢ㄦ柟寮忎竴鍜屾柟寮忎簩鏉ュ垎鍒鏄庛備竴銆佷娇鐢ㄦ柟寮忎竴锛氭櫠鎸鐜涓12MHz锛屾満鍣ㄥ懆鏈熶负1us锛50ms鏃堕棿闇瑕佽鏁50000娆★紝鏁呰鏁板櫒鍒濆间负锛65536-50000锛夛紝65536鏄洜涓烘柟寮忎竴涓紝瀹氭椂/璁℃暟鍣ㄧ殑鏈澶у间负65536锛2^16锛夛紝褰撶劧鍐欑▼搴忔椂涓...
绛旓細include <reg51.h>void InitTimer1(void){ TMOD = 0x10;//瀹氭椂鍣1 鏂瑰紡1 TH1 = 0x3C;//12Mhz鏅舵尟锛屽畾鏃50ms TL1 = 0x0B0; EA = 1; ET1 = 1; TR1 = 1;}void main(void){ P1=0xff; InitTimer1(); while(1);}void Timer1Interrupt(void) interrup...
绛旓細T=1/f=50US void Timer0Init(void)//100寰@12MHz { AUXR &= 0x7F;//瀹氭椂鍣鏃堕挓12T妯″紡 TMOD &= 0xF0;//璁剧疆瀹氭椂鍣ㄦā寮 TL0 = 0x9C;//璁剧疆瀹氭椂鍒濆 TH0 = 0xFF;//璁剧疆瀹氭椂鍒濆 TF0 = 0;//娓呴櫎TF0鏍囧織 TR0 = 1;//瀹氭椂鍣0寮濮嬭鏃 } 涔嬪悗鍦ㄤ腑鏂噷鍐欏叆P01=~P01; 灏卞ソ浜 ...
绛旓細.鏂瑰紡1涓16浣嶉暱搴﹁鏁扮粨鏋,璁惧垵鍊间负z,鍒(65536-z)脳1us=200us寰梲=65334D锛岃浆鎹负16杩涘埗鍚,TH=FF,TL=38.鏈夋帶鍒跺瘎瀛樺櫒TCON涓殑TR0浣嶆潵鎺у埗瀹氭椂鐨勫惎鍔ㄥ拰鍋滄,TR0=1鍚姩,TR0=0鍋滄 include<REG51.H> define uchar unsigned char define uint unsigned int uchar data cnt;sbit pwm=P1^...