完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电路图如下: 就是这样一个51的单片机,管脚无法控制,电源和晶振正常,大概会是什么原因呢?我就往里面烧写了一个很简单的程序,控制一个管脚的高低电平,可就是没有反应。 单片机无法工作,可能会是因为什么原因引起的呢?程序如下:
#include //头文件包含特殊功能寄存器的定义 ***it LED=P1^0;// 用***it 关键字 定义 LED到P1.0端口, //LED是自己任意定义且容易记忆的符号 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 LED=1; //将P1.0口赋值 1,对外输出高电平 LED=0; //将P1.0口赋值 0,对外输出低电平 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } |
|
相关推荐
4个回答
|
|
谢谢,发现问题了,少焊了一个电阻,电路不是我设计的,晕死
|
|
|
|
你控制它都不带加个延时的当然控制不住,高低电平后分别加个500ms到1s左右的延时看看现象
|
|
|
|
按照下面来改吧,实际上就是在while(1)循环里面重复改变LED的状态,并增加了延时,这样你才能看到LED的状态周期性改变,并且变化不是那么快。。
void main (void) { unsigned char i, j; while (1) //主循环 { LED=1; //将P1.0口赋值 1,对外输出高电平 i = 250; j = 250; k = 2; while(k) { while(j) { while(i) i--; j--; } k--; } LED=0; //将P1.0口赋值 0,对外输出低电平 i = 250; j = 250; k = 2; while(k) { while(j) { while(i) i--; j--; } k--; } //主循环中添加其他需要一直工作的程序 } } |
|
|
|
你的程序主循环里根本就没有跑LED赋值的语句,那P1.0口的状态肯定就是你对LED最后的赋值,即0。正确的程序应该是在主循环里取反LED的状态,并且延时合适的时间,你才能用示波器观察到LED的状态变化。
|
|
|
|
只有小组成员才能发言,加入小组>>
3318 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9063 浏览 16 评论
4088 浏览 18 评论
1183浏览 3评论
609浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
601浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2336浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1897浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 00:34 , Processed in 1.449031 second(s), Total 85, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号