资源简介
这是我用attiny13做的pwm和ad采样程序,通过改变采样电压来控制占空比大小,调试成功!

代码片段和文件信息
//main.c
#include
#include
//typedef unsigned char uint8;
//typedef unsigned int uint16;
#define uchar unsigned char
#define uint unsigned int
/*typedef enum
{
READ = 0
WRITE
}IIC_RW_TAG;
typedef enum
{
FALSE = 0
TRUE
}BOOLEAN;
typedef enum
{
NON_KEY = 0
KEY1
KEY2
}KEY_VALUE;*/
#define BIT(i) (1 << i)
#define ADC_PORT 2
//#define KEY3_PORT 0
//#define KEY4_PORT 1
#define LOW_ADC_LINE 0x155//0x186//0x01//
#define HIGH_ADC_LINE 0x2BB//0x2AA//0x3FE//
//#define GREEN 3
//#define RED 4
#define VOLUME_ADD 0x5
#define VOLUME_SUB 0xa
//#define RED_ON DDRB |= (1 << RED) //输出低电平 测试:红灯亮
//#define RED_OFF DDRB &= ~(1 << RED) //输入,外部电阻上拉为高电平 测试:红灯灭
//#define GREEN_ON DDRB |= (1 << GREEN) //输出低电平 测试:绿灯亮
//#define GREEN_OFF DDRB &= ~(1 << GREEN) //输入,外部电阻上拉为高电平 测试:绿灯灭
void Delay_ms(uint n);
//void Delay_IIC(uint16 n);
void ADC_init(void);
//KEY_VALUE Get_KEY_VALUE(void);
void sys_init(void);
int main(void);
void Delay_ms(uint n) //n = 0时,为最大延时
{
uint m = 250;
while(--n)
{
while(--m);
}
}
/*void Delay_IIC(uint16 n) //n = 0时,为最大延时
{
while(--n);
}*/
void ADC_init(void)
{
ADCSRA=0x00;
/***************************************************
//内部1.1v参考电压0通道
ADMUX ADC多路复其选择寄存器 - ADMUX
7 6 5 4 3 2 1 0
- REFS0 ADLAR - - - MUX1 MUX0
____________________________________________
REFS0 | 参考电压选择
0 | Vcc 作为模拟参考电压
1 | 片内基准电压1.1V
--------------------------------------------
ADLAR = 0 右对齐
MUX1.MUX1:01 - ADC1
*******************************************************/
ADMUX = 0x01; //选择ADC1通道
ACSR = (1 << ACD); //禁用模拟比较器
/********************************************************************
ADCSRA:ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
7 - ADEN: ADC使能
6 - ADSC: ADC开始转换
5 - ADATE: ADC自动触发使能
4 - ADIF: ADC中断标志位
3 - ADIE: ADC中断允许
2..0 - ADPS2..0: ADC预分频选择
000 - 2 ; 001 - 2;010 - 4; 011 - 8;
100 - 16;101 - 32;110 - 64;111 - 128
*********************************************************************/
//使能ADC,终端允许自由模式时钟CLK/8
//0x86允许转换ADEN,ADSC,时钟128分频 75KHz@9.6MHz system clock
ADCSRA = (1 << ADEN) | 0x07;//| ( 1 << ADATE )
}
/*KEY_VALUE Get_KEY_VALUE(void)
{
KEY_VALUE key_ret = NON_KEY;
uint16 adc_value1;
uint16 adc_value2;
ADC = 0;
ADCSRA |= (1 << ADSC); //启动AD转换
Delay_IIC(8);
loop_until_bit_is_set(ADCSRA ADIF); //方法1 等待AD转换结束
////loop_until_bit_is_clear(ADCSRA ADSC); //方法2 检测ADSC=0也行
ADCSRA |= (1 << ADIF); //写1清除标志位*/
/*******计算公式******************************************
ADC(ADCH+ADCL) = (Vin * 1024)/Vref
Vin :选定的输入因交上的电压,Vref选定的参考电源的电压,现为Vcc
********************************************************/
/*adc_value1 = ADC;
Delay_ms(20); //去抖动延时
ADCSRA |= (1 << ADSC); //启动AD转换
Delay_IIC(8);
loop_until_bit_is_set(ADCSRA ADIF); //方法1 等待AD转换结束
////loop_until_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1119 2012-03-22 17:01 322attiny13 pass\armok01128594\.dep\main.o.d
文件 110 2012-03-22 13:46 322attiny13 pass\armok01128594\1.pnproj
文件 54 2012-03-22 13:46 322attiny13 pass\armok01128594\1.pnps
文件 7620 2006-09-11 11:28 322attiny13 pass\armok01128594\ADC做的双按键_SCH.gif
文件 5324 2012-03-22 17:01 322attiny13 pass\armok01128594\main.c
文件 13 2012-03-22 17:01 322attiny13 pass\armok01128594\main.eep
文件 5792 2012-03-22 17:01 322attiny13 pass\armok01128594\main.elf
文件 1175 2012-03-22 17:01 322attiny13 pass\armok01128594\main.hex
文件 9783 2012-03-22 17:01 322attiny13 pass\armok01128594\main.lss
文件 12745 2012-03-22 17:01 322attiny13 pass\armok01128594\main.lst
文件 15223 2012-03-22 17:01 322attiny13 pass\armok01128594\main.map
文件 5504 2012-03-22 17:01 322attiny13 pass\armok01128594\main.o
文件 1280 2012-03-22 17:01 322attiny13 pass\armok01128594\main.sym
文件 14821 2006-08-31 08:41 322attiny13 pass\armok01128594\Makefile
文件 782 2012-03-22 16:10 322attiny13 pass\armok01128594\pwm.h
目录 0 2012-03-22 17:04 322attiny13 pass\armok01128594\.dep
目录 0 2012-03-22 17:04 322attiny13 pass\armok01128594
目录 0 2012-03-22 18:10 322attiny13 pass
----------- --------- ---------- ----- ----
81345 18
- 上一篇:Windows Installer Clean UP
- 下一篇:vue开发购物车完整
相关资源
- AutoCAD永久去教育版破解补丁
- grads绘制雨量(GRID.GRD)
- HAP_Advanced_PDF_Password_Recovery 5.05
- Reparatory Effects of Nicotine on NMDA Recepto
- LenovoTinkPad; Marker 5.01
- railroad铁路CAD生成
- CAD中插入带坐标的正射影像——Inse
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- adams vibration 练习原文件
- 单片机、ADC0808809设计简易数字电压表
- STM32基于rt_thread操作系统的SDHC卡文件
- 加密cad图形的lisp文件
- Auto CAD_LISP程序集
- CAD2010注册机32bit and 64bit
- ado数据库MFC图书管理系统vs2010
- SG3525频率PWM控制均可调模块
- 基于c8051f020的AD转换程序及LCD显示程序
- 地下停车场CAD设计图
- 实时显示钢筋标注面积V0.44
- Adobe Illustrator CS5原版amtlib.dll文件
- CAD计算板料展开插件
- ADNS-3080光流传感器测试程序Arduino
- CAD LISP24个源代码
- CAD剖面图制作LISP程序
- 数据采集系统——ADC0808的应用,单片
- 一个比较完整的开源cad 图形程序
-
ob
jectARX给Auto CAD加工具条 - AD7606采集程序
- ADC0809数字电压表 LCD1602显示 汇编程序
评论
共有 条评论