![]() |
發布時間: 2018-1-10 21:18
正文摘要:#include "reg52.h" sbit lamp_pwm=P2^0;// sbit key0=P2^1;// sbit key1=P2^2;// unsigned int inc; void INT0s()interrupt 0 using 0// { ... |
樓主問題解決了么 |
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器 typedef unsigned int u16; //對數據類型進行聲明定義 typedef unsigned char u8; //--定義使用的IO口--// sbit PWM=P2^1; //脈沖調整輸出端口 bit DIR; // 位定義,一位0 1 //--定義一個全局變量--// u16 count,value,timer1; /******************************************************************************* * 函 數 名 : Timer1Init * 函數功能 : 定時器1初始化 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void Timer1Init() { TMOD|=0X10;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。 TH1 = 0xFF; TL1 = 0xff; //1us ET1=1;//打開定時器1中斷允許 EA=1;//打開總中斷 TR1=1;//打開定時器 } /******************************************************************************* * 函 數 名 : main * 函數功能 : 主函數 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void main() { Timer1Init(); //定時器1初始化 while(1) { // if(count>200) //count從暗到亮的時間 // { // count=0; // if(DIR==0) //DIR控制增加或減小 // { // value++; // } //// if(DIR==0) //// { //// value--; //// } // // } value=320; // if(value==800) // value占空比,調節亮度 70-1000 // { // DIR=0; // value=780; // } // if(value==0) // 占空比達到最小時,改變方向 // { // DIR=1; // } if(timer1>1000) //PWM周期為1000*1us { timer1=0; } if(timer1 <value) { PWM=1; } else { PWM=0; } } } /******************************************************************************* * 函 數 名 : Time1 * 函數功能 : 定時器1的中斷函數 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void Time1(void) interrupt 3 //3 為定時器1的中斷號 1 定時器0的中斷號 0 外部中斷1 2 外部中斷2 4 串口中斷 { TH1 = 0xFF; TL1 = 0xff; //1us timer1++; count++; } |
我也不太懂 ,最近也想做一個 |