GPIO口控制学习

通过在mini2440平台上控制蜂鸣器,来实现GPIO控制学习


GPB0为控制蜂鸣器的端口


有三个控制寄存器,右边为地址

GPBCON     0x56000010

GPBDAT      0x56000014

GPBUP        0x56000018


S3C2440datasheet:






由此可总结出:

1.GPBCON寄存器是用来控制该对应端口的功能,是输入还是输出

2.GPBDAT是用来接收和发送数据给相对应的端口

3.GPBUP 上拉电阻,0就是使用上拉电阻,1就是不使用上拉电阻,使用上拉电阻是因为,有些引脚是悬空的,容易被干扰,当使用上拉电阻时,与高电平相接,使引脚处于高电平,比如下图这个按键的引脚就是使用了上拉电阻



于是代码为(MDK环境下的)

	AREA beep_test, CODE, READONLY
	ENTRY

pGPBCON   EQU 0x56000010	;Port B control
pGPBDAT   EQU 0x56000014	;Port B data
pGPBUP    EQU 0x56000018	;Pull-up control B

start
	LDR	R0, =pGPBCON   ;LDR伪指令,将GPBCON的地址赋给R0
	LDR	R1, [R0]       ;LDR指令,将R0所指向的地址的值赋给R1
	ORR	R1, R1, #0x01  ;或指令,让最低位为1  
	STR	R1, [R0]       ;STR指令,与LDR作用相反

	LDR	R0, =pGPBUP       ;GPB1UP使其DISABLE
	LDR	R1, [R0]
	ORR	R1, R1, #0x01
	STR	R1, [R0]

;Beep on
beep_on
	LDR	R0, =pGPBDAT
	LDR	R1, [R0]
	ORR	R1, R1, #0x01
	STR	R1, [R0]
	
	MOV	R2, #0x10000
	BL	delay              ;跳转到delay

;	b .

;Beep off
beep_off
	LDR	R0, =pGPBDAT
	LDR	R1, [R0]
	BIC	R1, R1,#0x1
	STR	R1, [R0]

	MOV	R2, #0x100000
	BL	delay

	b	beep_on

delay
	SUB	R2, R2, #0x1
	CMP	R2, #0x0	
	BNE	delay
	MOV	PC, LR       ;文章下面对MOV指令有个小提示

	NOP
	END

关于MOV指令:


也就是说当传送的值是立即数时必须是可通过右循环得到的8位立即数,但如果是寄存器则没有这个限制


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值