历史上的今天
今天是:2024年11月19日(星期二)
2019年11月19日 | AVR单片机定时器1 CTC模式A实验程序
2019-11-19 来源:51hei
/*AVR定时器1CTC模式A实验*/
#include
#define uchar unsigned char
#define uint unsigned int
#define set_bit(a,b) a|=(1<#define clr_bit(a,b) a&=(1<#define get_bit(a,b) a&(1<uint i;
#pragma interrupt_handler time1ctc_a_isr:7
void time1ctc_a_isr()//定时计数器1CTC中断A通道
{
PORTC^=0x20;//输出方波T=8*2=16毫秒
}
#pragma interrupt_handler time1ctc_b_isr:8
void time1ctc_b_isr()//定时计数器1CTC中断B通道
{
PORTC^=0x04;//输出方波T=8*2=16毫秒
}
void int_time1ctc_a_b()//定时器1设置初始化
{
SREG=0x80;//开启全局中断
TCNT1=0;//这里我采用RC震荡8M时钟,1024分频,一个数是7.8125微秒
TCCR1A=0x40;//工作在CTC模式,开启A通道,关闭B通道,在外部引脚OC1A/OC1B体现为取反事件,
TCCR1B=0x0D;//CTC模式,内部8M1024分频,
OCR1A=6000;//CTC精度A通道
/*在这里一定要注意A通道和B通道不能同时开启,否则有两种情况,第一OCR1A>OCR1B时出现很不正常的现象,两个中断好像都发生了*/
/*怎么可能呢,当TCNT1=OCR1A时就会吧TCNT1清零,也就是说OCR1B永远不会触发中断,但是他的引脚确实是动了,而且与A通道的正好相反,*/
/*是什么原因?我分析过,但是无果,所以要注意AB通道同时开启的后果是不可知的,还有一种情况就是OCR1A
/*第一种原因真是令人费解!!!!!!20110418 */
TIMSK=0x10;//开启定时器比较匹配输出A通道中断
}
void main()
{
DDRD=0xff;
DDRC=0xff;
PORTC=0;
int_time1ctc_a_b();
while(1);
史海拾趣
|
我电脑里装的是vs2008,然后下载了一个SDK,装上了,用VS2008做了一个简单的界面,可以运行在本机的模拟wince6.0中,可复制到了ebox中就不可以运行了,为什么?我只装了一个sdk,是否应该装什么pb,corecon之类的东西? 如果我的方法不对,正确的 ...… 查看全部问答> |
|
我现在在做一个东西,大概的框架是这样的,首先将模拟信号通过两路AD转换之后,通过一定的算法输出,由于LPC2114没有DA转换,所以这里我使用了LPC2114里面的PWM,通过PWMDAC代替DA转换输出模拟值控制执行器。现在目前的问题是,我采用了四个PWM输出 ...… 查看全部问答> |
|
我调试一个矩阵键盘的驱动程序的时候,该驱动程序的基本功能代码都测试过了,在将应用层和驱动程序联合调试的时候,串口出现以下错误:出错后可以继续运行,下一次从应用层读这个设备还是一样的错误输出。 ==================================== ...… 查看全部问答> |
|
【我给XILINX资源中心做贡献】经典教材---Verilog HDL硬件描述语言. 经典教材---Verilog HDL硬件描述语言.目 录 译者序 前言 第1章 简介 1 1.1 什么是Verilog HDL? 1 1.2 历史 1 1.3 主要能力 ...… 查看全部问答> |
|
430上有个Comparator_A,可以模拟电压的比较输入,看这个比较器用户手册介绍时说,比较器输出可以提供给定时器A的捕获输入,我郁闷了好久这个怎么设置,在寄存器里面没有看到选项,我用的Launchpad_G2553。还有问题就是有引脚有CAOUT输出功能,我怎 ...… 查看全部问答> |




