![]() |
發(fā)布時(shí)間: 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" //此文件中定義了單片機(jī)的一些特殊功能寄存器 typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義 typedef unsigned char u8; //--定義使用的IO口--// sbit PWM=P2^1; //脈沖調(diào)整輸出端口 bit DIR; // 位定義,一位0 1 //--定義一個(gè)全局變量--// u16 count,value,timer1; /******************************************************************************* * 函 數(shù) 名 : Timer1Init * 函數(shù)功能 : 定時(shí)器1初始化 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void Timer1Init() { TMOD|=0X10;//選擇為定時(shí)器1模式,工作方式1,僅用TR1打開啟動(dòng)。 TH1 = 0xFF; TL1 = 0xff; //1us ET1=1;//打開定時(shí)器1中斷允許 EA=1;//打開總中斷 TR1=1;//打開定時(shí)器 } /******************************************************************************* * 函 數(shù) 名 : main * 函數(shù)功能 : 主函數(shù) * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void main() { Timer1Init(); //定時(shí)器1初始化 while(1) { // if(count>200) //count從暗到亮的時(shí)間 // { // count=0; // if(DIR==0) //DIR控制增加或減小 // { // value++; // } //// if(DIR==0) //// { //// value--; //// } // // } value=320; // if(value==800) // value占空比,調(diào)節(jié)亮度 70-1000 // { // DIR=0; // value=780; // } // if(value==0) // 占空比達(dá)到最小時(shí),改變方向 // { // DIR=1; // } if(timer1>1000) //PWM周期為1000*1us { timer1=0; } if(timer1 <value) { PWM=1; } else { PWM=0; } } } /******************************************************************************* * 函 數(shù) 名 : Time1 * 函數(shù)功能 : 定時(shí)器1的中斷函數(shù) * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void Time1(void) interrupt 3 //3 為定時(shí)器1的中斷號(hào) 1 定時(shí)器0的中斷號(hào) 0 外部中斷1 2 外部中斷2 4 串口中斷 { TH1 = 0xFF; TL1 = 0xff; //1us timer1++; count++; } |
我也不太懂 ,最近也想做一個(gè) |
Powered by 單片機(jī)教程網(wǎng)