/************************************************************************************
* Copyright (c), 2006-2007, C8051F网络
* All rights reserved.
*
* Http: www.c8051f.com
* Email: mite@vip.qq.com
*
* File name: timer.c
* File name: iic.c
* Project : C8051F040DK
* Processor: C8051F040
* Compiler : Keil C51 Compiler
*
* Author : EmbedARM
* Version: 1.00
* Date : 2009.8.5
* Email : EmbedARM@126.com
* Modification: none
*
* Description: 本文件是timer硬件驱动程序文件;
*
* Others: none;
*
* Function List:
* 1. void Timer0_Init(unsigned long freq)
* 2. void Timer0_Enable(void)
* 3. void Timer0_Disable(void)
* 4. void Timer0_SetValue(unsigned int value)
* 5. void Timer1_Init(unsigned long freq)
* 6. void Timer1_Enable(void)
* 7. void Timer1_Disable(void)
* 8. void Timer1_SetValue(unsigned int value)
* 9. void Timer2_Init(unsigned long freq)
* 10. void Timer2_Enable(void)
* 11. void Timer2_Disable(void)
* 12. void Timer2_SetValue(unsigned int value)
* 13. void Timer3_Init(unsigned long freq)
* 14. void Timer3_Enable(void)
* 15. void Timer3_Disable(void)
* 16. void Timer3_SetValue(unsigned int value)
*
* History:
* 1. Author: 李林利
* Version: 0.9
* Date: 2009.1.1
* Modification: none
*
*************************************************************************************/
/************************************************************************************/
// 引用外部头文件
#include "..\config\c8051f040.h"
#include "..\config\const.h"
#include "timer.h"
unsigned int timer0_10ms;
unsigned int timer2_10ms;
unsigned int timer3_10ms;
unsigned int timer4_10ms;
unsigned char T0h,T0l;
extern unsigned long code sysclk;
/*************************************************************************************/
//
// Timer0 参数及函数定义
//
// Note: Timer0未被占用,以下函数用户可自由修改使用
//
/*************************************************************************************/
/***********************************************************************************
* Function: Timer0_Init;
*
* Description: Timer0 初始化函数;
*
* Input: freq,定时或计数溢出频率;
*
* Return: none;
*
* Note: 该定时器未被占用用户可自由使用;
************************************************************************************/
void Timer0_Init(unsigned long freq)
{
unsigned int count;
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE; // set SFR page 0
CKCON = 0;
TMOD &= ~0x0f;
TMOD|=0x01;
count = -(sysclk/freq/12);
TH0 = (count>>8)&0x00ff;
TL0 = count&0x00ff;
T0h = TH0;
T0l = TL0;
ET0 = 1; // 允许中断
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer0_Enable;
*
* Description: Timer0使能函数, Timer0开始工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer0_Enable(void)
{
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE; // set SFR page 0
TR0 = 1;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer0_Disable;
*
* Description: Timer0关闭函数, Timer0停止工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer0_Disable(void)
{
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE; // set SFR page 0
TR0 = 0;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer0_SetValue;
*
* Description: 设置定时或计数寄存器值;
*
* Input: value,定时或计数寄存器值;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer0_SetValue(unsigned int value)
{
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE; // set SFR page 0
TL0 = value&0x00ff;
TH0 = (value>>8)&0x00ff;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer0_ISR;
*
* Description: 定时器0中断响应;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer0_ISR (void) interrupt 1 using 3
{
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE; // set SFR page 0
TR0 = 0;
TH0 = T0h;
TL0 = T0l;
TR0 = 1;
timer0_10ms++;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/*************************************************************************************/
//
// Timer1 参数及函数定义
//
// Note: Timer1已被UART0占用,在不应用UART0的情况下
// 以下函数用户可自由修改使用
//
/*************************************************************************************/
/***********************************************************************************
* Function: Timer1_Init;
*
* Description: Timer1 初始化函数;
*
* Input: freq, 定时或计数溢出频率;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer1_Init(unsigned long freq)
{
unsigned char count,n;
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE;
TMOD&=0x0f;
TMOD|=0;
//PCON |= 0x90; // SMOD1 = 1, 禁止Uart1的波特率/2功能
n = sysclk/freq/16/256; // 计算判断变量
if (n < 1)
{
count = -(sysclk/freq/16); // 计算定时器计数值
CKCON |= 0x10; // T1M = 1,系统时钟
}
else if (n < 12)
{
count = -(sysclk/freq/16/12); // 计算定时器计数值
CKCON &= ~0x10; // T1M = 1,系统时钟/12
}
else
{
PCON &= ~0x10; // SMOD1 = 1, 允许Uart1的波特率/2功能
count = -(sysclk/freq/16/12); // 计算定时器计数值
CKCON &= ~0x10; // T1M = 1,系统时钟/12
}
TL1 = count;
TH1 = count;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer1_Enable;
*
* Description: Timer1使能函数,Timer1开始工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer1_Enable(void)
{
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE;
TR1 = 1;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer1_Disable;
*
* Description: Timer1关闭函数,Timer0停止工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer1_Disable(void)
{
char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = TIMER01_PAGE;
TR1 = 0;
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
/***********************************************************************************
* Function: Timer1_SetValue;
*
* Description: 设置定时或计数寄存器值;
*
* Input: value,定时或计数寄存器值;
*
* Return: none;
*
* Note: none;
*
没有合适的资源?快使用搜索试试~ 我知道了~
PWM.rar_8051CF340有PWM吗_PWM C8051F340_c8051f340_c8051f340 PWM
共99个文件
obj:25个
lst:25个
h:20个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 164 浏览量
2022-09-24
15:04:47
上传
评论 1
收藏 234KB RAR 举报
温馨提示
c8051f340 单片机PWM控制输出源码下载
资源推荐
资源详情
资源评论
收起资源包目录
PWM.rar (99个子文件)
PWM
config
Config.h 3KB
vars.c 2KB
c8051F040.h 24KB
Const.h 1KB
driver
DAC.c 7KB
RTC.c 7KB
DAC.h 5KB
RTC.h 5KB
SPIFlash.h 7KB
IIC.c 9KB
Delay.h 3KB
ADC.h 3KB
key.h 2KB
eeprom.h 3KB
iic.h 4KB
spi.c 6KB
other.h 4KB
system.h 3KB
Can.h 7KB
SPIFlash.c 14KB
spi.h 4KB
Compare.c 2KB
pwm.h 2KB
key.c 3KB
other.c 5KB
Delay.c 3KB
Uart.h 8KB
pwm.c 3KB
ADC.c 6KB
LCD.c 6KB
Compare.h 1KB
Can.c 12KB
LCD.h 7KB
timer.c 18KB
Uart.c 16KB
timer.h 10KB
system.c 4KB
eeprom.c 4KB
PWM.plg 185B
output
CH372.lst 12KB
Pcf8563.obj 3KB
system.lst 8KB
IIC_Driver.lst 9KB
PWM.m51 134KB
CP.lst 3KB
timer.lst 32KB
Delay.lst 6KB
LCD.obj 10KB
ADC.lst 12KB
Key.obj 6KB
DAC.lst 12KB
main.lst 8KB
CH372.obj 14KB
vars.obj 555B
PWM.hex 22KB
RTC.obj 12KB
other.lst 9KB
vars.lst 4KB
LCD.lst 11KB
PWM.plg 15KB
PWM.obj 5KB
SYS_Init.lst 5KB
main.obj 11KB
SPIFlash.obj 20KB
Uart.lst 28KB
system.obj 6KB
eeprom.lst 8KB
ADC.obj 7KB
PWM.lst 6KB
Uart.obj 14KB
PWM.lnp 463B
spi.lst 10KB
at24cxx.obj 4KB
DAC.obj 7KB
CP.obj 966B
Instruct.lst 4KB
eeprom.obj 7KB
at24cxx.lst 6KB
IIC.obj 10KB
spi.obj 7KB
Key.lst 7KB
PWM 136KB
IIC_Driver.obj 4KB
SYS_Init.obj 3KB
Compare.obj 3KB
Pcf8563.lst 7KB
Delay.obj 4KB
timer.obj 21KB
other.obj 5KB
Compare.lst 5KB
SPIFlash.lst 25KB
IIC.lst 18KB
RTC.lst 13KB
Instruct.obj 2KB
PWM.Opt 4KB
PWM.Uv2 3KB
source
main.C 3KB
PWM_Opt.Bak 4KB
PWM_Uv2.Bak 3KB
共 99 条
- 1
资源评论
小贝德罗
- 粉丝: 71
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功