当前位置:首页 > 单片机 > 单片机
[导读]在实验一中,研究了如何输出高低电平。本实验来研究了如何接收高低电平,我们知道,GPIO的输入功能的实际上是电压测量,不会形成通路。实验2:在下面的电路中:假设我们将GPG11设置为输入功能,GPB5设置为输出功能,

在实验一中,研究了如何输出高低电平。


本实验来研究了如何接收高低电平,我们知道,GPIO的输入功能的实际上是电压测量,不会形成通路。


实验2:在下面的电路中:




假设我们将GPG11设置为输入功能,GPB5设置为输出功能,检测开关是否按下,如果按下,则点亮LED,否则熄灭。


观察电路图可知,开关的一端接在GND(接地)上,另一端通过电阻接在VCC(电源3.3V)上,而S3C2440的GPG11接在开关与电阻之间。


这个电路中,电阻称为上拉电阻,其作用在于,当开关断开时,GPG11检测到高电平,当开关闭合时,GPG11引脚检测到低电平。


相应的也有下拉电阻,用来拉低电平,以后会接触到。


#################################################################################################################


仅用C语言实现,比较简单方便

#################################################################################################################


key_led.bin : crt0.S key_led.c

arm-linux-gcc -g -c -o crt0.o crt0.S

arm-linux-gcc -g -c -o key_led.o key_led.c

arm-linux-ld -Ttext 0x0000000 -g crt0.o key_led.o -o key_led_elf

arm-linux-objcopy -O binary -S key_led_elf key_led.bin

arm-linux-objdump -D -m arm key_led_elf > key_led.dis

clean:

rm -f *.bin *elf *.o *bak *.dis *~


.text

.global _start

_start:

ldrr0, =0x53000000

movr1, #0x00000000

strr1, [r0]

ldrsp, =1024*4

blmain

halt_loop:

bhalt_loop


int main()

{

unsigned long dwDat;

* (unsigned long *)0x56000010 = 0x00000400;

* (unsigned long *)0x56000060 = 0x00000000;

while(1)

{

dwDat = * (unsigned long *)0x56000064;

if (dwDat & 0x00000800)

{

* (unsigned long *)0x56000014 = 0xFFFFFFFF;

}

else

{

* (unsigned long *)0x56000014 = 0xFFFFFFDF;

}

}

return 0;

}








<完结>


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭