下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
//目标系统: 基于AVR单片机
//应用软件: ICC AVR
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
使用PA口作为信号源输入到74LS165,74LS165将会将该信号转为串行信号,
MCU再自己接收串行信号,使用PB口的LED指示灯查看数据是否正确。
----------------------------------------------------------------------
硬件连接:
将PB口的LED指示灯开关切换到"ON"状态。
SeialBoard(165PrlPort) SMK1632
P0 --------- PB0
P1 --------- PB1
P2 --------- PB2
P3 --------- PB3
P4 --------- PB4
P5 --------- PB5
P6 --------- PB6
P7 --------- PB7
PL --------- PD2
SeialBoard(165SrlPort) SMK1632
VCC --------- VCC
GND --------- GND
TXD --------- RXD
RXD --------- TXD
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“产品资料\开发板实验板\SMK系列\SMK1632\说明资料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#include <iom16v.h>
#include "D:\ICC_H\CmmICC.H"
#define DISP_DDR DDRB
#define DISP_PORT PORTB
#define SOURCE_DDR DDRA
#define SOURCE_PORT PORTA
#define IN_RXD cbi(DDRD,0) //PD0 数据口
#define GET_RXD gbi(PIND,0)
#define OUT_TXD sbi(DDRD,1) //PD1 脉冲口
#define SET_TXD sbi(PORTD,1)
#define CLR_TXD cbi(PORTD,1)
#define OUT_PL sbi(DDRD,2) //PD2 锁存口
#define SET_PL sbi(PORTD,2)
#define CLR_PL cbi(PORTD,2)
/*--------------------------------------------------------------------
程序名称:从74LS165获取数据
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
uint8 getDat()
{
uint8 i,dat;
for(i=0;i<8;i++) //循环输出8位数据
{
SET_TXD; //设置为高电平
if(GET_RXD) //下降沿时候获取数据
dat |= 0x01;
dat = dat<<1;
CLR_TXD; //设置为低电平
}
dat = dat>>1;
return dat;
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void main()
{
uint8 i;
DISP_DDR = 0XFF;
SOURCE_DDR = 0XFF;
OUT_PL;
OUT_TXD;
IN_RXD;
//while(1)
//{
SOURCE_PORT = 0X55;
SET_PL;
CLR_PL;
SET_PL;
DISP_PORT = getDat();
//}
}