完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用2片74HC244扩展2个8位输入口PORTA、PORTB分别连接两个拨码开关。选中PORTA必须P2.2=0, 选中PORTB必须P2.3=0。设计2个共阳极数码管,P3.0连接一个开关接地, 当P3.0=0,动态显示PORTA读得的数据,当P3.0=1,动态显示PORTB读得的数据。 这个是老师给的程序让我们修改后在AT89C51上运行 #include #define uint unsigned int #define uchar unsigned char xdata uchar PORTA _at_ 0xfeff; //A端口 xdata uchar PORTB _at_ 0xfdff; //B端口 data uchar i; ***it P3_5=P3^5; uchar code table[ ]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,~0x88,~0x83,~0xc6,~0xa1,~0x86,~0x8e,~0xff}; uchar code sled_bit[]={0xf1,0xf2,0xf4}; //定义点亮的数码管与数组的关系*/ uchar data disp[2]; void main( ) { data uchar a; TMOD=0x01; // 设置定时器T0为方式1定时 TH0=(65536-500)/256; // 给T0装入初值 TL0=(65536-500)%256; // 给T0装入初值 ET0=1; // 允许T0中断 EA=1; // CPU开中断 TR0=1; i=0; P2=0; while(1) { if(P3_5) a=PORTB; else a=PORTA; disp[0]=a/16; disp[1]=a%16; } } void T0_int(void) interrupt 1 //T0中断函数 { data uchar k; TH0=(65536-500)/256; TL0=(65536-500)%256; P3=0xfc; k = disp; P1 = table[k]; //显示数字 P3 = sled_bit; i++; if(i>=2)i=0; } 我不是很理解 比如P3.5是控制什么 还有P3=0xfc PORTA寄存器里是已经有数据 直接读出来输入单片机总线 通过数码管显示出来? 显示出来具体是什么也知道啊 能给我部分程序 和思路吗 |
|
相关推荐
4个回答
|
|
在这个程序里,P3.5相当于你所要求的P3.0的作用,至于p3=0xfc,应该是程序原来有其他用,既然是让你用来修改的,与要求不相关的就都可以改掉
|
|
|
|
拓展的 porta 是数据寄存器从拓展口读入 可以直接把porta的值赋给一变量 再把变量传递给数码管显示吗 |
|
|
|
你需要先整理一个符合你要求的流程出来,把流程拆分成若干对立功能的小部分,然后再参考上面的程序进行修改,这个程序是给你参考的,看这个程序,有可能是三个的数码管的,所以现在没必要研究这个程序,先考虑好自己要做什么
|
|
|
|
厉害,感谢分享,谢谢
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1786 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
982 浏览 0 评论
3094 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2733 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1831 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
6515 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-11 04:41 , Processed in 0.685421 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号