找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5716|回复: 0
打印 上一主题 下一主题
收起左侧

STM32 74hc164 时序仿真 程序

[复制链接]
跳转到指定楼层
楼主
ID:99624 发表于 2015-12-27 05:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"stm32f10x_lib.h"

//此为位绑定编码过程 一劳永逸 以后可以直接使用
#define GIPOA_IDR ( GPIOA_BASE + 0X08)
#define GIPOA_ODR ( GPIOA_BASE + 0X0C)
#define GIPOB_IDR ( GPIOB_BASE + 0X08)
#define GIPOB_ODR ( GPIOB_BASE + 0X0C)
#define GIPOC_IDR ( GPIOC_BASE + 0X08)
#define GIPOC_ODR ( GPIOC_BASE + 0X0C)
#define GIPOD_IDR ( GPIOD_BASE + 0X08)
#define GIPOD_ODR ( GPIOD_BASE +0X0C)      
#define BitBound(Addr,BitNum) (*((volatile unsignedlong*)((Addr&0xF0000000)+0X2000000+((Addr&0xFFFFF)<<5)+(BitNum<<2))))
#definePAOut(n)        BitBound(GIPOA_ODR,n)
#definePAIn(n)        BitBound(GIPOA_IDR,n)
#definePBOut(n)        BitBound(GIPOB_ODR,n)
#definePBIn(n)        BitBound(GIPOB_IDR,n)
#definePCOut(n)        BitBound(GIPOC_ODR,n)
#definePCIn(n)        BitBound(GIPOC_IDR,n)
#definePDOut(n)        BitBound(GIPOD_ODR,n)
#definePDIn(n)        BitBound(GIPOD_IDR,n)

void delay_nms(u16 data);//此时需要函数声明
//
//int main(void)
//{
//
//    GPIOA->CRL=0X33333333;   //设置GPIOA的低八位为推挽式输出 50mhz
//    GPIOA->CRH=0X44444444;   //设置GPIOA的高八位为 浮空型 输入
//       while(1)
//       {
//                       if( PAIn(8) ==0)                              //PA.8按下
//                                       PAOut(0) =0;                   //LED亮
//                       else
//                                       PAOut(0) = 1;
//                       if( PAIn(9) == 0)
//                                       PAOut(1) = 0;
//                       else
//                                       PAOut(1) = 1;
//                       if( PAIn(10) == 0)
//                                       PAOut(2) = 0;
//                       else
//                                       PAOut(2) = 1;
//
//       }
//}
int main(void)
{
u8 data,i;
//GPIOA.0 为a,b  GPIOA.1 为clock   gpioa.0为clear   
// 164通信 QA-QH 输出为0x10010011  PA.0来产生DATA  PA.1来做时钟
  GPIOA->CRL=0x33;  //A.0 A.1为推挽式 输出 50mhz
  GPIOB->CRL=0X03; //B.0    为推挽式 输出 50mhz

PBOut(0)=1;    //PB.0为高 说明clear 此时无效
  data=0x93;
   for(i=0;i<8;i++)
   {
     PAOut(1)=0;         //为时钟的上升沿做准备哦!亲!
  if((data&0x01)==0x01)  PAOut(0)=1;
  else                   PAOut(0)=0;
   delay_nms(1);

   PAOut(1)=1;
   delay_nms(1);
   data=data>>1;
   }
  

return (1);
}

void delay_nms(u16 data)
{
u16 i,j;
for(i=0;i
  for(j=1000;j>0;j--)  ;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表