|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大侠帮忙看一下这个程序,为何我无法对单片机的IO口进行单独的位操作。即使按键没有按下,也就是PIND0为高电平的状态下,程序依然进入到了if里面去执行语句。按正常情况的话,它是不应该执行if里面的语句的。这是怎么回事?程序和仿真图片如下:
8 E- F, n6 k% z2 j$ X5 q: @2 z#include<stdio.h>' D! A6 k& X- |; @( z% H
#include<iom128v.h>
- T* q! U% S" `" {7 d0 Pvoid delayns(void)
8 L: ?9 w* V9 |, E" ~( X# C; Y/ g9 s{
0 j$ l8 H, I* a unsigned int i;" c5 i" ? ?$ I# Y9 C2 \% [
for(i=0;i<50;i++);
, {" p9 i5 E) }4 M }}
( i5 p8 ~8 a3 F$ W0 H
4 t4 V0 C, ~3 k* p, mvoid main(void)
, O) ^6 y8 c0 y& W$ w{
7 ]1 q- g8 T/ z* O+ b( t DDRD=0X00;. D: P7 T6 ~: _9 f k
DDRA=0XFF;* z& E a" W$ ]( a, I' T5 Y
DDRE=0X04;) M7 ], f Q5 W+ _5 w0 C$ m
PORTD=0XFF;
, p; q* x- j* X1 \! {4 y PORTA=0XFF;+ q# T" @8 U1 W: a, b
PORTE=0X04;( u! P% N: m; l" B7 y. t
while(1)# q* W% O# P3 `; D/ M
{
- }, U) x$ h; d. n' j6 b& O if(PIND0==0)
4 s$ V8 O( R0 s9 s# O* X {
7 N b8 d ?5 g delayns();
: _8 w( C5 U' R+ {' [$ y if(PIND0==0)
# t; G: {0 h9 {+ W, `+ ~ {PORTA=0XFE;}
' ^2 L/ X- |* a" V }6 `. ? v. |/ C
}9 o W n+ Z5 B9 t$ P2 I; y
}
+ e0 K. H z9 Y6 u |
|