- #include "STC12C5A60S2.h"
- typedef unsigned char u8;
- typedef unsigned short u16;
- typedef unsigned long u32;
- sbit PWM=P2^1;
- u16 tick;
- u16 Ton;
- /*********************************************************
- 函數名:T1Init
- 輸 入:
- 輸 出:
- 功 能:初始化T2并運行
- *********************************************************/
- void T1Init()
- {
- //C_T2=1;CP_RL2=0;
- //TH2=0xff;
- //TL2=0xff;
- //TR2=1;EA=1;ET2=1;
- TMOD|=0x20;
- TH1=0xff;
- TL1=0xfe;
- ET1=1;//打開定時器1中斷允許
- EA=1;//打開總中斷
- TR1=1;//打開定時器
- }
- /*********************************************************
- 函數名:T2Interrupt
- 輸 入:
- 輸 出:
- 功 能:
- *********************************************************/
- void T2Interrupt() interrupt 3
- {
- tick++;
- }
- /*********************************************************
- 函數名:PWM_Generator
- 輸 入:T:周期,Tx1um D:100倍占空比
- 輸 出:
- 功 能:
- *********************************************************/
- void PWM_Generator(u16 Period,u16 Duty)
- {
- Ton=Period/100*Duty;
- if(tick>=Period)tick=0;
- if(Ton<Period)
- {
- if(tick>Ton)PWM=0;
- else PWM=1;
- }
- else
- Ton=0;
- }
- /*********************************************************
- 函數名:main
- 輸 入:
- 輸 出:
- 功 能:
- *********************************************************/
- main()
- {
- //u8 i;
- T1Init();
- while(1)
- {
- //for(i=0;i<100;i++){PWM_Generator(1000,i);}
- //for(i=100;i<=0;i--){PWM_Generator(1000,i);}
- PWM_Generator(10000,90);
-
- }
- }
復制代碼
勤加練習if(==) |