资源简介
这是我用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
相关资源
- AD9220中文资料.pdf
- PIC32 bootloader 应用文档中文版
- ADS1252 高精度的24bitAD 源程序通过
- AD9910中文数据手册
- 网上买的单片机开发板原理图,非常
- 变频器控制图CAD
- 理发师问题Linux,c
- ORCAD16.3及完美破解的地址
- radius认证服务器搭建详细过程
- webuploader封装2.0
- zw_ise_vivado_2014_2.zip
- adsl.zip
- 可添加头部和尾部的 RecyclerView
- 2017年最新vivado的license
- NTC AD采集数值计算软件
- 无机房观光电梯CAD图纸
- autocad编号速写lsp文件
- PSCAD官方给的几个IEEE模型
- ca6140机床主轴箱cad格式图
- Proteus 7 仿真 单片机双积分式AD转换电
- RibbonGadgets
- AD9837驱动.txt
- 进程同步读者写者问题
- AUTOCAD电气元件库
- AutoUpgrader_v5.2_XE7_XE8_XE10_XE10.1_Berlin
- 工程案例—机器人Adams虚拟实验详细步
- CSpreadSheet.h
- 高速AD ADS1252U 的程序
- vivado2015.4 license
- 使用Qt实现的阴影映射源代码
评论
共有 条评论