51hei.png (9.05 KB, 下載次數: 50)
下載附件
2020-12-25 14:52 上傳
- /*************************************************************************************************
- * * 工 程 名:4路數字電源用 外部觸發發生器
- * * 創 建 人:
- * * 創建時間:
- * * 編 譯 器:
- * * 描 述:
-
- ---------------------------------------------------------------------------------------------------
- **----------------------------------------當前版本修訂---------------------------------------------
- * * 修改人:
- * * 日 期:
- * * 描 述:
- * *
- * * ----------------------------------------------------------------------------------------------
- * * 修改人:
- * * 日 期:
- * * 描 述:
- * *
- * * ----------------------------------------------------------------------------------------------
- **************************************************************************************************/
- #include <STC15F104E.H>
- #include <intrins.h>
- #include <string.h>
- #undef BIT
- #define BIT(x) (1<<(x))
- #define IOSET(port,x) (port)|=(x)
- #define IOCLR(port,x) (port)&=~(x)
- #define IOXOR(port,x) (port)^=(x)
- #define GETBIT(port,x) ((port&BIT(x))>>x)
- #define CLI() EA=0 //關全局中斷
- #define SEI() EA=1 //開全局中斷
- #define TH0RLD 0xFA
- #define TL0RLD 0x00
- /**************************************************************************************************
- * * 函數名稱:void timer0(void) interrupt 1
- * * 函數功能:Timer0 中斷服務函數
- * * 輸入參數:
- * * 返回參數:
- * * 備 注:
- **************************************************************************************************/
- unsigned int n20HzCnt = 0;
- unsigned int n10HzCnt = 0;
- void timer0(void) interrupt 1
- {
- CLI();
- TL0=TL0RLD;//重裝定時器
- TH0=TH0RLD;
- if( 295 == n20HzCnt ++)
- {
- n20HzCnt = 0;
- IOXOR(P3,BIT(5));
- }
- if( 560 == n10HzCnt ++)
- {
- n10HzCnt = 0;
- IOXOR(P3,BIT(2));
- }
- //IOCLR(P1,BIT(6));
- //IOSET(P1,BIT(6));
- SEI();
- }
- /**************************************************************************************************
- * * 函數名稱:void Timer0_Initialize(void)
- * * 函數功能:Timer0 初始化
- * * 輸入參數:
- * * 返回參數:
- * * 備 注:內部時鐘FOSC = 18.432 ,定時1ms 初值 0xFA00
- **************************************************************************************************/
- void Timer0_Initialize(void)
- {
- #if 0
- U32 v;
- TMOD&=0xf0;
- TMOD|=0X01; //T0方式1
- v=FOSC/12/5000;
- v=v-6;
- if(v>65535)v=65535;
- v=65535-v;
- TH0RLD=v>>8;
- TL0RLD=v;
- TH0 =TH0RLD;
- TL0 =TL0RLD;
- TR0 =1; //啟動T0
- ET0 =1 //允許T0中斷
- #endif
- TMOD |= 0x1; // 定時器T0,模式1
- TH0 = TH0RLD; // 定時時長為1ms,即T0=0xFACB
- TL0 = TL0RLD;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- /**************************************************************************************************
- * * 函數名稱:void InitPortAndVar(void)
- * * 函數功能:IO端口配置和全局變量初始化
- * * 輸入參數:
- * * 返回參數:
- * * 備 注:P3.2 P3.5 強推挽輸出
- **************************************************************************************************/
- void InitPortAndVar(void)
- {
- P3M1 = 0x00; //
- P3M0 = 0x14; // 1111 1111
- }
- /**************************************************************************************************
- * * 函數名稱:void Initialize_Devices(void)
- * * 函數功能:設備初始化
- * * 輸入參數:
- * * 返回參數:
- * * 備 注:P3.5 強推挽輸出
- **************************************************************************************************/
- void Initialize_Devices(void)
- {
- InitPortAndVar();
- //Uart1_init(2400,0);//28800/12=2400,關中斷
- IOSET(AUXR,BIT(7)); // T0x12,讓T0的時鐘變為原來的12倍。 1,一個時鐘周期 0 12個時鐘周期
- Timer0_Initialize();
- EA=1;
- }
- /**************************************************************************************************
- * * 函數名稱:main 函數
- * * 函數功能:
- **************************************************************************************************/
- void main(void)
- {
- unsigned char k;
- Initialize_Devices();
- while(1)
- {
- k = k;
- }
- }
復制代碼
全部資料51hei下載地址:
STC15W104 204w資料.rar
(2.51 MB, 下載次數: 65)
2020-12-25 09:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|