设MCS-51的单片机时钟频率为12Mhz请编写程序在P1.7脚输出周期为1s,脉宽为1ms的脉 在8051单片机的时钟频率为12MHz,用T0定时,试编程使...

\u8bbeMCS-51\u7684\u5355\u7247\u673a\u65f6\u949f\u9891\u7387\u4e3a12Mhz\u8bf7\u7f16\u5199\u7a0b\u5e8f\u5728P1.7\u811a\u8f93\u51fa\u5468\u671f\u4e3a1s,\u8109\u5bbd\u4e3a1ms\u7684\u8109

#include#define uchar unsigned charsbit pluse=P1^7;void delay(int a){uchar i;while(a--)for(i=0;i<120;i++);}main(){while(1) { pluse=1; delay(1); pluse=0; delay(999); }}

\u6709\u5f88\u591a\u65b9\u6cd5\u7684\uff0c\u7b2c\u4e00\u79cd\u662f\u7528\u6a21\u62dfPWM,\u8bbe\u7f6e\u597d\u5360\u7a7a\u6bd4\u4e3a1/2\uff0c\u6839\u636e\u5468\u671f\u8bbe\u5b9a\u597d\u9891\u7387\u5c31\u53ef\u4ee5\u4e86\uff0c\u4f60\u8fd9\u4e2a\u4e0d\u9700\u8981\u53d8\u52a8\u7684\u8bdd\uff0c\u4e0d\u7528PWM\u4e5f\u53ef\u4ee5\uff0c\u53ef\u4ee5\u8fd9\u6837\u5199\uff1a
#define T0_delay 1000
sbit P10=P1^0;
sbit P11=P1^1;
unsigned int Pwm_Count=0;
void Timer0_init();
void main()
{
Timer0_init();
while(1);//\u7a7a\u5faa\u73af
}
void Timer0_init()
{
TMOD |=0x01; //\u91c7\u752816\u4f4d\u5b9a\u65f6\u5668
TH0 = (65536-T0_delay)/256; //\u5b9a\u65f6\u5668\u88c5\u521d\u503c1000
TL0 = (65536-T0_delay)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0 = (65536-T0_delay)/256; //\u88c5\u521d\u503c1000\uff0c1ms\u4e2d\u65ad\u4e00\u6b21
TL0 = (65536-T0_delay)%256;
P10=~P10;//\u53d6\u53cd\uff0c1ms\u540e\u7535\u5e73\u53d8\u6362\uff0c\u8f93\u51fa\u5468\u671f\u4e3a2ms\u7684\u65b9\u6ce2
Pwm_Count++;//\u8ba1\u6570
if(Pwm_Count==250)
{
Pwm_Count=0;//\u5f52\u96f6\uff0c\u4e0b\u6b21\u91cd\u65b0\u4ece\u96f6\u5f00\u59cb\u7d2f\u52a0\u8ba1\u6570
P11=~P11;//\u53d6\u53cd\uff0c250ms\u7535\u5e73\u8f6c\u6362\u4e00\u6b21\uff0c\u8f93\u51fa\u65b9\u6ce2
}
}
\u8981\u91c7\u7528\u6a21\u62dfPWM\u51fd\u6570\u7684\u8bdd\uff0c\u53ef\u4ee5\u8fd9\u6837\u5199\uff1a
\u5b9a\u65f6\u5668\u88c51ms\u7684\u521d\u503c\uff08\u540c\u4e0a\uff09
#define LED_ON 1
#define LED_OFF 0
\u4e3b\u8981\u4ee3\u7801\u5982\u4e0b\uff1a
P10=~P10;
//---------------------------------------------------------------------
Pwm_Count_500 ++;
if(Pwm_Count>500)
{
Pwm_Count_500 =0;
}
(Pwm_Count _500< 250)?(P11= LED_ON):(P11= LED_OFF);//\u95ee\u53f7\u8bed\u53e5\u6765\u4ee3\u66ffif\u8bed\u53e5\uff0c\u66f4\u4e3a \u7b80\u6d01\u4e00\u70b9\uff0c\u5b9e\u6548\u4e0a\u6d4b\u8bd5\u4e24\u8005\u8017\u65f6\u76f8\u540c\uff0c\u591a\u8def\u65f6\u8017\u65f6\u6bd4if\u66f4\u77ed\uff0c\u4ee3\u7801\u5360\u6709\u7a7a\u95f4\u5728\u591a\u8defPWM\u65f6\u95ee\u53f7\u8bed\u53e5\u660e\u663e\u53ef\u4ee5\u5360\u66f4\u5c11\u7a7a\u95f4\u3002\u8fd9\u4e9b\u65b9\u9762\u4e5f\u8bb8\u662f\u6807\u51c6C\u5e93\u51fd\u6570\u5728\u5b9e\u73b0\u6bd4\u8f83\u4e24\u4e2a\u6570\u5927\u5c0f\u65f6\u91c7\u7528\u95ee\u53f7\u8bed\u53e5\u7684\u539f\u56e0\u4e4b\u4e00\u3002

#include<reg51.h>
#define uchar unsigned chr
#define uint unsigned int
uint cnt;
sbit pluse=P1^7;
void t0isr() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
cnt++;
cnt%=1000;
if(cnt<1)pluse=1;
else pluse=0;
}
main()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}


153

  • mcs-51鏃堕挓棰戠巼涓12MHz鑳戒笉鑳借幏寰楀埌9600bps鐨勬尝鐗圭巼?
    绛旓細鎵浠ワ紝浠ュ埄鐢≧S232鎺ュ彛瀹炵幇FPGA涓庤绠楁満杩涜閫氫俊涓轰緥锛屽叿浣撶殑娉㈢壒鐜囨槸鐢辫璁¤呯‘瀹氱殑銆傝鍒╃敤FPGA鐨勬椂閽熸簮鍒嗛寰楀埌浜嗕竴涓4800Hz鐨勬椂閽淇″彿锛岃浣犺浼犺緭鐨勬暟鎹綅闀夸负6浣嶏紝鍦ㄥ彂閫佽繖6浣嶆暟鎹墠锛屼綘鍙互涓鐩村彂閫1锛屼互姝ゅ憡璇夎绠楁満浣犺繕娌″彂閫佹湁鏁堢殑鏁版嵁锛岀劧鍚庝綘鍦ㄦ椂閽熶笂鍗囨部鍒版潵鏃跺彂閫0锛屼互姝ゅ憡璇夎绠楁満浣犲氨瑕...
  • MCS-51鍗曠墖鏈鐨勯渿鑽″懆鏈,鏃堕挓鍛ㄦ湡,鏈哄櫒鍛ㄦ湡,鎸囦护鍛ㄦ湡鏄浣曞畾涔夌殑?
    绛旓細闇囪崱鍛ㄦ湡锛氭病鎬庝箞鍚紝鐪嬩綘鍚庨潰鐨勬弿杩帮紝搴旇鏄寚 鏅舵尟闇囪崱鍛ㄦ湡銆傚氨鏄櫠鎸骇鐢熺殑姝e鸡娉㈢殑鍛ㄦ湡銆鏃堕挓鍛ㄦ湡锛氬浜庢爣鍑51鍗曠墖鏈鏉ヨ锛屽氨鏄 鏅舵尟闇囪崱鍛ㄦ湡銆傛満鍣ㄥ懆鏈燂細鏍囧噯51鍗曠墖鏈猴紝閲囩敤12T妯″紡鏈哄櫒鍛ㄦ湡锛屽嵆 1涓満鍣ㄥ懆鏈=12鍊嶆椂閽熷懆鏈熴傚綋闇囪崱棰戠巼涓12MHz鏃讹紝鏈哄櫒鍛ㄦ湡=12/12MHz=1us=0.001ms 鎸囦护鍛ㄦ湡锛氬氨鏄...
  • 51鍗曠墖鏈烘椂閽鍛ㄦ湡,鏈哄櫒鍛ㄦ湡,鎸囦护鍛ㄦ湡濡備綍瀹氫箟鐨
    绛旓細鐢变簬鏃堕挓鑴夊啿鏄绠楁満鐨勫熀鏈伐浣滆剦鍐,瀹冩帶鍒剁潃璁$畻鏈虹殑宸ヤ綔鑺傚(浣胯绠楁満鐨勬瘡涓姝ラ兘缁熶竴鍒板畠鐨勬璋冧笂鏉)銆傛樉鐒,瀵瑰悓涓绉嶆満鍨嬬殑璁$畻 鏈,鏃堕挓棰戠巼瓒婇珮,璁$畻鏈虹殑宸ヤ綔閫熷害灏辫秺蹇 8051鍗曠墖鏈鎶婁竴涓椂閽熷懆鏈熷畾涔変负涓涓妭鎷(鐢≒琛ㄧず),浜屼釜鑺傛媿瀹氫箟涓轰竴涓姸鎬佸懆鏈(鐢⊿琛ㄧず)銆傛満鍣ㄥ懆鏈:鍦ㄨ绠楁満涓,涓轰簡渚...
  • .mcs-51鍗曠墖鏈虹殑鏃堕挓鍛ㄦ湡銆佹満鍣ㄥ懆鏈熴佹寚浠ゅ懆鏈熸椂搴忔槸濡備綍鍒嗛厤鐨?褰撴尟鑽...
    绛旓細鏃堕挓鍛ㄦ湡 锛 1 / 鎸崱棰戠巼銆傛満鍣ㄥ懆鏈 = 12 鏃堕挓鍛ㄦ湡銆傛寚浠ゅ懆鏈 = 1 锛堟垨 2銆4锛 涓満鍣ㄥ懆鏈熴
  • MCS-51鍗曠墖鏈虹殑鏃堕挓鍛ㄦ湡涓庢尟鑽″懆鏈熶箣闂存湁浠涔堝叧绯 涓涓満鍣ㄥ懆鏈熺殑鏃跺簭濡...
    绛旓細鏃堕挓鍛ㄦ湡涓涓椂閽熻剦鍐叉墍闇瑕佺殑鏃堕棿銆傚湪璁$畻鏈虹粍鎴愬師鐞嗕腑鍙堝彨T鍛ㄦ湡鎴栬妭鎷嶈剦鍐层傛槸CPU鍜屽叾浠鍗曠墖鏈鐨勫熀鏈椂闂村崟浣嶃傚畠鍙互琛ㄧず涓烘椂閽熸櫠鎸棰戠巼锛1绉掗挓鐨勬椂閽鑴夊啿鏁帮級鐨勫掓暟銆傜敤鎸崱鍛ㄦ湡鏉ヨ褰曟椂閽熷懆鏈燂紝鎸崱涓娆¤褰曚竴娆℃椂閽熷懆鏈燂紝鏃堕挓鍛ㄦ湡琛ㄧず浜哠DRAM鎵鑳借繍琛岀殑鏈楂橀鐜囥傛満鍣ㄥ懆鏈熸椂搴忕敱鎸崱鍛ㄦ湡鏉ュ垝鍒嗭紝鍐呭瓨涓...
  • MCS-51鍗曠墖鏈烘椂閽涓12MHz,鍒╃敤瀹氭椂鍣═0缂栫▼浠1.0寮曡剼杈撳嚭2ms鐨勭煩褰...
    绛旓細2ms鍛ㄦ湡鏂规尝锛1:2鍗犵┖姣旂殑璇濆緱涓嶅埌绮剧‘鍊笺侽RG 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...
  • 璁綧CS-51鍗曠墖鏈鐨勬櫠鎸棰戠巼涓12MHz,缂栫▼浣縋1.0绔緭鍑洪鐜囦负20kHz鏂规尝,鏄...
    绛旓細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; 灏卞ソ浜 ...
  • 璁綧CS-51鍗曠墖鏈鐨勬櫠鎸棰戠巼涓12MHZ,浣跨敤瀹氭椂鍣1宸ヤ綔鏂瑰紡1涓柇鏂瑰紡鍦≒1...
    绛旓細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...
  • 缂栫▼棰 璁綧CS-51鍗曠墖鏈绯荤粺涓櫠鎸棰戠巼涓12MHz,娆蹭娇鐢ㄥ畾鏃跺櫒/璁℃暟鍣1...
    绛旓細閲囩敤12Mhz鏅舵尟鐨51鍗曠墖鏈锛岃蒋浠跺涓嬶紙璋冭瘯閫氳繃锛塱nclude <reg52.h> define PERIODH (65536l-50000l)/0X100 //璁50ms涓柇1娆H1鍒濆 define PERIODL (65536l-50000l)%0X100 //璁50ms涓柇1娆L1鍒濆 //濡傛灉闇瑕佹瀬绮剧‘鐨勫欢鏃讹紝搴旀牴鎹疄闄呯紪璇戝悗鐨勪骇鐢熺殑姹囩紪鎸囦护锛屾墸闄ゆ帀涓柇鍝嶅簲涓噸瑁呮墍鍗犵敤鐨...
  • 璁綧CS-51鍗曠墖鏈浣跨敤鐨勬櫠鎸槸12MHz,娆蹭娇鐢ㄥ畾鏃跺櫒/璁℃暟鍣1瀹炵幇50ms瀹氭椂涓...
    绛旓細涓嶇浣跨敤浠涔堝伐浣滄柟寮忛兘鏄彲浠ュ畬鎴愮殑锛岃繖涓彇鍐充簬浣犺缃殑瀹氭椂/璁℃暟鍣ㄧ殑鍒濆笺備笅闈娇鐢ㄦ柟寮忎竴鍜屾柟寮忎簩鏉ュ垎鍒鏄庛備竴銆佷娇鐢ㄦ柟寮忎竴锛氭櫠鎸棰戠巼涓12MHz锛屾満鍣ㄥ懆鏈熶负1us锛50ms鏃堕棿闇瑕佽鏁50000娆★紝鏁呰鏁板櫒鍒濆间负锛65536-50000锛夛紝65536鏄洜涓烘柟寮忎竴涓紝瀹氭椂/璁℃暟鍣ㄧ殑鏈澶у间负65536锛2^16锛夛紝褰撶劧鍐欑▼搴忔椂涓...
  • 扩展阅读:51单片机时钟框图 ... c51单片机时钟设计 ... 51单片机时钟c程序 ... mcs51单片机时钟电路图 ... mcs-51的时钟最高频率是 ... mcs-51单片机引脚功能 ... mcs-51系列储存空间有 ... mcs-51单片机内部结构图 ... 画出mcs51单片机时钟电路 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网