? 键盘输入流程
图3.2 键盘输入流程
软件设计如下(PS/2键盘子程序): void __irq IRQ_Eint0 (void) { n++; keybuffer[j]>>=1;
if(IO0PIN&DATA)keybuffer[j]|=0x8000; //读数据,为1则最高位置1. if(n==11) //接收起始位,八位数据,奇校验位,停止位, { n=0; keybuffer[j]>>=6; keybuffer[j]&=0x00ff;
num++;
if(keybuffer[(j+41)B]==0xf0&&keybuffer[(j+13)]!=0xe0) {keyflag=1;keyvalue=keybuffer[j];}
else if(keybuffer[(j+14)]==0xf0&&keybuffer[(j+13)]==0xe0) {keyflag=-1;keyvalue=keybuffer[j];} j++; if(j==42)j=0; }
if(keyflag==1)
{ keyflag=0;
keyprocess1(keyvalue); keyvalue=0; } if(keyflag==-1); { keyflag=0;
keyprocess2(keyvalue);
- 17 -
?
keyvalue=0; }
*/ */
EXTINT = 0x01; /* 清除EINT0中断标志 VICVectAddr = 0; /* 向量中断结束
SD卡读写程序流程
SD卡用作存储功能,对它的主要操作就是读写功能,我们在研究这部分功能的时候还
加上擦除功能,使SD卡的应用更加的广泛和完善。对SD卡的操作如下图:
图3.3 SD卡读写程序流程
SD卡存储函数main()程序如下: #include %uint8 buffer[512]; uint8 ret;
int main (void)
{int i;
ret = SD_Initialize(); //1. 初始化SD卡, 即启动卡
for (i = 0; i < 512; i++) buffer[i] = 0xAA;
ret = SD_WriteBlock(100, buffer); // 2. 写SD卡的第100扇区
for (i = 0; i < 512; i++)
buffer[i] = 0;
ret = SD_ReadBlock(100, buffer); // 3. 读SD卡的第100扇区
ret = SD_EraseBlock(100, 20); //4.擦除100各扇区中的20个 return 0;
}
- 18 -
?
打印程序流程 程序略。
图 3.4 打印机部分程序设计流程 ?
测温程序流程
温度传感器我们采用的是DS18B20,可达12位的数字值,分辨率为0.0625?C。DS18B20测温程序流程如下图:
19
图3.5 DS18B20程序设计方案
DS18B20测温程序(部分):
/*************************************************************************/ //DS18B20初始化程序,成功返回1否则返回0.
/*************************************************************************/ uint32 DS18B20init(void)
{ IO0DIR|=DQ; IO0CLR=DQ; delay(6000); IO0DIR=IO0DIR&(~DQ);
20

