资源简介
uC/OS-II 编译器: ICCAVR
CPU ATMega16 8MHz 晶振
对原uC/OS-II进行了简化,去掉了hook,保留了基本功能,代码精简,编译后代码占 Mega16 的 26%
时钟使用timer2,中断时间为2 ms
//**************************************************//
//**************************************************//
任务1:刷新LED,检测按键,调整时间
任务2:计时,串口发送 9600 bps
//**************************************************//
//**************************************************//
作者: PiQiu
网站: www.txmcu.com
邮箱: songbaosena@163.com
//**************************************************//

代码片段和文件信息
#ifndef OS_MASTER_FILE
#include “includes.h“
#include “AVR_PQ1A.h“
#endif
#pragma data:code
const SEGMENT[16]={0x3f0x060x5b0x4f0x660x6d0x7d 0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};
#pragma data:data
/*******************************************
函数名称: DS1302_init
功 能: 初始化DS1302的数据接口
参 数: 无
返回值 : 无
/********************************************/
void DS1302_portinit(void)
{
DDRB|=BIT(RTC_CLK)|BIT(RTC_DATA)|BIT(RTC_CS);//将时钟端(RTC_CLK)数据端(RTC_DATA)片选端(RTC_CS)设置为输出
}
/*******************************************
函数名称: DS1302_writeB
功 能: 向DS1302写入一个字节数据(没有RST操作)
参 数: byte--要写入的数据
返回值 : 无
/********************************************/
void DS1302_writeB(uchar byte)
{
uchar i;
for(i=0;i<8;i++) //8位数据计数
{
PORTB&=~BIT(RTC_CLK); //拉低时钟端
if(byte&0x01) //当前位是否是1
{
PORTB|=BIT(RTC_DATA); //当前位是1,拉高数据端
}
else
{
PORTB&=~BIT(RTC_DATA); //当前位是0,拉低数据端
}
Delayus(10); //调整时钟和脉冲宽度
PORTB|=BIT(RTC_CLK); //时钟上升沿(DS1302采样数据)
byte>>=1; //数据右移1位,为送出新数据位做准备
}
}
/*******************************************
函数名称: DS1302_readB
功 能: 从DS1302读出一个字节数据(没有RST操作)
参 数: 无
返回值 : byte--读出的数据
/********************************************/
uchar DS1302_readB(void)
{
uchar ibyte=0;
DDRB&=~BIT(RTC_DATA); //将数据端口设置为输入
PORTB&=~BIT(RTC_DATA); //无上拉电阻
for(i=0;i<8;i++) //8位数据计数
{
byte>>=1; //保存读入的数据位
PORTB|=BIT(RTC_CLK); //时钟上升沿
Delayus(10); //延时,调整时钟脉冲宽度
PORTB&=~BIT(RTC_CLK); //时钟下降沿,DS1302输出数据位
Delayus(10); //等待数据变化(MEGA16太快,必须等待DS1302的数据位输出,否则不能正确读出)
if(PINB&BIT(RTC_DATA)) //当前位是否是高电平
{
byte|=BIT(PB7); //是高电平就将返回数据的当前位置1
}
else
{
byte&=~BIT(PB7); //是低电平就将返回数据的当前位置0
}
}
DDRB|=BIT(RTC_DATA); //最后将数据端口设置为输出
return byte; //返回读出的数据
}
/*******************************************
函数名称: DS1302_writeD
功 能: 向DS1302的某个地址写入一个字节数据
参 数: addr--地址值(寄存器或RAM)
data--要写入的地址
返回值 : 无
/********************************************/
void DS1302_writeD(uchar addruchar data)
{
PORTC&=~BIT(RTC_CS); //拉低片选端
PORTB&=~BIT(RTC_CLK); //拉低时钟端
Delayus(10);
PORTC|=BIT(RTC_CS); //拉高片选端
Delayus(10); //调整片选脉冲
DS1302_writeB(addr); //写入操作命令(地址)
Delayus(10);
PORTB&=~BIT(RTC_CLK); //拉低时钟端
Delayus(10);
DS1302_writeB(data); //写入数据
PORTB&=~BIT(RTC_CLK); //拉低时钟端
Delayus(10); //调整片选脉冲
PORTC&=~BIT(RTC_CS); //拉低片选端
}
/*******************************************
函数名称: DS1302_readD
功 能: 从DS1302的某个地址读出一个字节数据
参 数: addr--地址值(寄存器或RAM)
返回值 : data--读出的数据
/********************************************/
uchar DS1302_readD(uchar addr)
{
uchar data;
PORTC&=~BIT(RTC_CS); //拉低片选端
PORTB&=~BIT(RTC_CLK); //拉低时钟端
Delayus(10);
PORTC|=BIT(RTC_CS); //拉高片选端
Delayus(10); //调整片选脉冲
DS1302_writeB(addr); //写入操作命令(地址)
Delayus(10);
data=DS1302_readB(); //读出数据
Delayus(10);
PORTB&=~BIT(RTC_CLK); //拉
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15715 2007-02-26 17:49 21_uCOSII\AVR_PQ1A.h
文件 6334 2007-02-26 19:30 21_uCOSII\funcs.c
文件 403 2007-03-04 11:29 21_uCOSII\funcs.dp2
文件 37160 2007-03-04 11:29 21_uCOSII\funcs.lis
文件 8901 2007-03-04 11:29 21_uCOSII\funcs.o
文件 17084 2007-03-04 11:29 21_uCOSII\funcs.s
文件 473 2007-02-26 08:22 21_uCOSII\includes.h
文件 1281 2007-02-26 08:23 21_uCOSII\os_cfg.h
文件 17859 2004-01-05 23:14 21_uCOSII\OS_CORE.C
文件 302 2007-03-04 11:29 21_uCOSII\OS_CORE.dp2
文件 67174 2007-03-04 11:29 21_uCOSII\OS_CORE.lis
文件 16439 2007-03-04 11:29 21_uCOSII\OS_CORE.o
文件 35682 2007-03-04 11:29 21_uCOSII\OS_CORE.s
文件 3923 2007-02-26 17:47 21_uCOSII\os_cpu.h
文件 0 2007-03-04 11:29 21_uCOSII\os_cpu_a.dp2
文件 27167 2007-03-04 11:29 21_uCOSII\os_cpu_a.lis
文件 7034 2007-03-04 11:29 21_uCOSII\os_cpu_a.o
文件 10311 2007-02-26 14:02 21_uCOSII\os_cpu_a.s
文件 5709 2006-12-01 13:24 21_uCOSII\os_task.c
文件 302 2007-03-04 11:29 21_uCOSII\os_task.dp2
文件 25948 2007-03-04 11:29 21_uCOSII\os_task.lis
文件 5528 2007-03-04 11:29 21_uCOSII\os_task.o
文件 12764 2007-03-04 11:29 21_uCOSII\os_task.s
文件 1579 2006-11-12 17:22 21_uCOSII\OS_TIME.C
文件 302 2007-03-04 11:29 21_uCOSII\OS_TIME.dp2
文件 5091 2007-03-04 11:29 21_uCOSII\OS_TIME.lis
文件 1308 2007-03-04 11:29 21_uCOSII\OS_TIME.o
文件 2797 2007-03-04 11:29 21_uCOSII\OS_TIME.s
文件 376 2007-02-27 10:04 21_uCOSII\prototype.h
文件 670 2007-02-26 07:58 21_uCOSII\readme.txt
............此处省略20个文件信息
相关资源
- MCGS与单片机通信
- atmega16硬件产生方波的程序
- 用ARM7和UC/OS-II设计的信号采集系统
- 一种用ARM7+UC/OS-II设计的信号采集系统
- ATmega16A DataSheet
- 自制AVR ATmega16 JTAG2008
- 两轮平衡车源程序,方能仪器,自平
- stm32f103c8t6移植uC/OS-III基于HAL库的工程
- ICCAVR v6.31a破解版+注册工具
- 嵌入式实时操作系统 uC/OS-II第二版
- ATmega16(L) 中文数据手册.pdf
- ICCAVR7.0破解版
- µC/OS-II: The Real-Time Kernel 2nd Edition英文
- ICCAVR7.22直接安装不需要注册
- uC/OS-II详细资料包含详细的注解
- iccavr7.22.rar
- 林夕依然ATmega16学习笔记 学习AVR
- STM32F103 UC/OS-II关于任务操作的系列C程
- ICCAVR_V7.22破解版
- STM32F103 UC/OS-II关于各种任务间通信的
- ATMEGA16 PROTUES 热水器
- iom16v.h ATmega16的头文件
- Proteus8.9 VSM Studio WINAVR编译器仿真ATM
- Proteus8.9 VSM Studio WINAVR编译器仿真ATM
- Atmega16 串口程序
- 基于AVR的ucos-ii的移植
- AVR ATMEGA16 SPI双机通信的PROTEUS仿真 双
- 基于ATMega16的PWM程序
- atmega16 蓝牙通信,舵机控制
- 基于atmega16的modbus通信
评论
共有 条评论