上节课余留问题:
标准做法:全部清0
部分置1置1:位或掩码。
清0:位与掩码的反码。
题:32位,17到10位设成0101…01
解:gpbcon&=~0x0003fc00
gpbcon|=0x00015400
注:置0变1(加上~就变成0了))
正文:使用按键控制led
电路图。k1闭合,gpb11低电平。
k1断开,gpb11高电平。
gpgdat11位,当gpb11为0时,低电平;当gpg11为1时,高电平。
考试肯定考的20分编程题!!!
#define gpbcon(*(volatile unsigned long*)0x56000010)
#define gpbdat(*(volatile unsigned long*)0x56000014)
#define gpgcon(*(volatile unsigned long*)0x56000050)
#define gpgdat(*(volatile unsigned long*)0x56000054)
#define gpfcon(*(volatile unsigned long*)0x56000060)
#define gpfdat(*(volatile unsigned long*)0x56000064)
#define gpb5_out 1<<(5*2)
#define gpb6_out 1<<(6*2)
#define gpb7_out 1<<(7*2)
#define gpb8_out 1<<(8*2)
#define gpg11_in ~(3<<(11*2))
#define gpg3_in ~(3<<(3*2))
#define gpf2_in ~(3<<(2*2))
#define gpf0_in ~(3<<(0*2))
int main(){
unsigned long dwdat;
gpbcon=gpb5_out| gpb6_out| gpb7_out| gpb8_out;
gpgcon=gpg11_in&gpg3_in;
gpfcon=gpf2_in&gpf0_in;
while(1){
dwdat=gpgdat;
if(dwdat&(1<<11)) 如果表达式为真值,表示k1没被按下,与gpg11相连。
gpbdat|=(1<<5); led1熄灭。
elsegpbdat&=~1<<5); led1点亮。
if(dwdat&(1<<3)) 如果表达式为真值,表示k2没被按下,与gpg3相连。
gpbdat|=(1<<6); led2熄灭。
elsegpbdat&=~1<<6); led2点亮。
dwdat=gpfdat;
if(dwdat&(1<<2)) 如果表达式为真值,表示k3没被按下,与gpf2相连。
gpbdat|=(1<<7); led3熄灭。
elsegpbdat&=~1<<7); led3点亮。
if(dwdat&(1<<0)) 如果表达式为真值,表示k4没被按下,与gpf0相连。
gpbdat|=(1<<8); led4熄灭。
elsegpbdat&=~1<<8); led4点亮。
return 0;
解读程序:上拉电阻寄存器:gpbup——0x56000018
gpgup——0x56000058
gpfup——0x56000068
a组00,b组10,c组20,以此类推,f组60)
#define gpb5_out 1<<(5*2)——第10位掩码置1
#define gpg11_in ~(3<<(11*2))—第(11向左移22位)22位和第23位的掩码清0
dwdat作用——临时保存gpgdat和gpfdat
out——输出引脚。
in——输入引脚。
问题:第10,12,14,16位是1,其它都是0了,变成输入引脚了。
作业:如何把第10,12,14,16位置1而其它不变成输入引脚?(22,23位,6,7位,4,5位,0,1位都是输入引脚,是所需的,而其它不需要。)
答:gpbcon&=~0x00c3fcf3
gpbcon|=0x00015400
gpbcon&=~0x00c000c0
gpbcon&=~0x00000033
分析:gpbcon和上课讲的一样;gpgcon只需将22,23位和6,7位置0;gpfcon只需将4,5位和0,1位置0;下图是汇总画的,只为理解过程,不是答案。
下节课交三条语句,其它不用写。
k1按下,gpgdat11为低电平,dwdat值为0,第11位值为0,位与11位的掩码得0;
k1断开,gpgdat11为高电平,dwdat值为1,第11位值为1,位与11位掩码得1;
判断某位是1还是0的方法:与上该位的掩码。
dwdat&(1<<2)
第二章嵌入式存储器。
神装工作站。
嵌入式嵌入式系统原理与设计
第六章 iic总线。一 iic总线介绍 i2c总线 1.结构。2.工作原理 a b 主机 主设备 负责生成scl时钟,同时负责发出其实信号s和终止信号p 从机 从设备 被主机寻址的器件。1 a检测i2c总线是否 空闲 如果空闲 高 a发出起始信号 scl高,sda 2 寻址选择目标器件b,发送7位地...
嵌入式嵌入式系统原理与设计
课前提问 xscale 内核,intel公司。arm7 内核,第七个版本。armv5te 指令集,v5版本,加入16位thumb指令集,加入dsp指令集。cortex m3 内核,arm公司,arm11之后开始以cortex命名 5.几款arm处理器内核比较 arm11比arm10主频高,能耗低,所...
嵌入式嵌入式系统原理与设计
课前复习 sdram 突发传输同一行起始地址。norflash 读 ce 低 oe 低 we 高 a0 a18 d0 d7 擦出写1 片 6个周期 6s 块 6个周期 0.7s 写写04个周期 ain 9 s 字节编程din nand flash 4096块 32页 512 16 字节。64m 2m...