设为首页
收藏本站
家园
博客
课程平台
教材专区
主站
开启辅助访问
切换到窄版
登录
|
加入中科因仑
请
登录
后使用快捷导航
没有帐号?
加入中科因仑
搜索
搜索
热搜:
活动
交友
discuz
本版
用户
论坛
BBS
全部帖子汇总
全部技术帖
非技术帖汇总
大赛专区
因仑云商城
产品服务
因仑项目小组
快捷导航
中科因仑“3+1”工程特种兵精英论坛
»
论坛
›
单片机
›
AVR单片机
›
ATMEGA8参考程序及其proteus仿真013、1~20HZ方波 ...
返回列表
查看:
977
|
回复:
0
ATMEGA8参考程序及其proteus仿真013、1~20HZ方波
[复制链接]
张衍波
张衍波
当前离线
积分
8235
电梯直达
沙发
发表于 2015-4-28 18:35:52
|
只看该作者
|
倒序浏览
|
阅读模式
/********************************************************************
汇诚科技
网址:
http://www.ourhc.cn
产品有售淘宝店:
http://shop36330473.taobao.com
*********************************************************************/
#include <iom8v.h>
#define uchar unsigned char
#define uint unsigned int
//定义BIT 0-7 置1
#define BIT0_POS (1<<0)
#define BIT1_POS (1<<1)
#define BIT2_POS (1<<2)
#define BIT3_POS (1<<3)
#define BIT4_POS (1<<4)
#define BIT5_POS (1<<5)
#define BIT6_POS (1<<6)
#define BIT7_POS (1<<7)
//定义BIT 0-7 清零
#define BIT0_NEG ((unsigned char)(~(1<<0)))
#define BIT1_NEG ((unsigned char)(~(1<<1)))
#define BIT2_NEG ((unsigned char)(~(1<<2)))
#define BIT3_NEG ((unsigned char)(~(1<<3)))
#define BIT4_NEG ((unsigned char)(~(1<<4)))
#define BIT5_NEG ((unsigned char)(~(1<<5)))
#define BIT6_NEG ((unsigned char)(~(1<<6)))
#define BIT7_NEG ((unsigned char)(~(1<<7)))
//定义红色LED熄灭、亮、翻转
#define LED_red_OFF PORTB&=BIT2_NEG
#define LED_red_ON PORTB|=BIT2_POS
#define LED_red_OTN PORTB^=BIT2_POS
uchar CNT=0;//计数初值
uchar CNT1=0;//判断值
uchar CNT2=0;//改变频率值
////////////////////////////////////////////////////////////////////
void DelayMS(uint i)//延时
{
uint j;
for(;i!=0;i--)
{
for(j=8000;j!=0;j--);
}
}
//////////////////////////////初始化////////////////////////////////////
void Init_IO(void)//初始化I/O
{
//设置C口为输出
DDRC=0xFF;
PORTC=0xFF;
//设置B口为输出
DDRB=0XFF;
PORTB=0xFF;
}
/////////////////////////////主函数/////////////////////////////////////
void main(void)
{
//uchar Load;
Init_IO(); //初始化I/O
TCCR0=0x04; //T/C0工作方式选择,系统时钟256分频
//(上一句可以改为)TCCR0 |= (1<<CS02);//T/C0工作于定时方式,系统时钟256分频
TCNT0=0X06; //计数初始值
TIMSK=0x01; //使能T0溢出中断
//(上一句可以改为)TIMSK |= (1<<TOIE0); //使能T0溢出中断
SREG=0x80; //使能全局中断
//(上一句可以改为)SREG |= (1<<7); //使能全局中断
while(1)
{
}
}
//////////////////////////T/CO中断服务函数//////////////////////////////////////////
#pragma interrupt_handler Timer0:10
void Timer0(void)
{
CNT++; //中断次数累加
CNT2++;
if(CNT==4) //计数到125次,计数复位
{
CNT=0;
CNT1++;
LED_red_OTN;
}
}
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
加入中科因仑
x
收藏
0
分享
支持
0
反对
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入中科因仑
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表