完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下面这是官网给的控制一个芯片的参考程序,就是把数据通过单片机发送到芯片中的三个寄存器当中,官网参考程序用的是ADUC841单片机,我想改成C8051F300这个封装很小的单片机,想用P0^0,P0^1,P0^2,P0^3四个引脚,数字交叉开关和端口配置什么的,我试了很多次,实在没办法了,来这里求教了!学生party表示需要学习求教的东西很多,希望大家多多帮助,真心谢谢了!
#include #include ***it DATA=P3^3; ***it SCLOCK=P3^4; ***it LATCH=P3^5; ***it CE=P3^7; void delay(int); void main() { unsigned long int registe0,registe1,registe2,temp1; int i; registe0=0x300029; //R Register registe1=0x0ff100; //C Latch registe2=0x007802; //N Register temp1=0x800000; CE=1; //Update R Latch the order of writing the registers should be R,C,N SCLOCK=1; DATA=0; LATCH=0; for(i=0;i<24;i++) { if((temp1®iste0)==0x0) DATA=0; else DATA=1; SCLOCK=0; SCLOCK=1; temp1=temp1>>1; } temp1=0x800000; LATCH=1; LATCH=0; for(i=0;i<24;i++) //Update C Latch { if((temp1®iste1)==0x0) DATA=0; else DATA=1; SCLOCK=0; SCLOCK=1; temp1=temp1>>1; } temp1=0x800000; LATCH=1; LATCH=0; delay(5000); //interval between programming C and N register needs to be at least 15ms for(i=0;i<24;i++) //Update N Register { if((temp1®iste2)==0x0) DATA=0; else DATA=1; SCLOCK=0; SCLOCK=1; temp1=temp1>>1; } temp1=0x800000; LATCH=1; while(1); } void delay(int length) { while (length >=0) length--; } |
|
相关推荐
1个回答
|
|
主要就是注意C8051的IO配置问题
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
494 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1050 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1151 浏览 0 评论
887 浏览 0 评论
928 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11847 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 21:28 , Processed in 0.537874 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号