C语言答辩。。帮我说明下以下程序 谢。。。

C语言答辩。。帮我说明下以下程序 谢。。。,第1张

#include

<stdio.h>

#include

<stdlib.h>

/////////////////////整个程序是链表的创建删除等功能

struct

node

{

int

date

struct

node*next

}Linklist1,linklist2

int

Length(struct

node

*head)

//////////////////////求已知的链表的长度

int

Locate(struct

node

*

p,int

n)

//////////求链表中n节点的位置

int

Find(struct

node

*

p,

int

n)

/////////////////求链表中第n个节点的值

int

Next(struct

node

*

p,

int

n)

//////////值为n的节点的前一个节点值

int

Previous(struct

node

*

p,

int

n)//////////值为n的节点的后一个节点值

void

Traverse(struct

node

*head)

////////////////遍历链表

void

CreateFromHead(struct

node

**p)

/////从表头建立链表

void

CreateFromTail(struct

node

**q)

/////从表尾建立链表

int

Insert(struct

node

**p,

int

x,

int

n)

/////////第n个位置插入数据x

int

Delete(struct

node

**p,int

n)

//////////////删掉第n个位置的节点

你这个应该是对寄存器的 *** 作吧,

#include"main.h"

#include"delay.h"

uchar scan_key(void)//返回值无符号字符类型

{

uchar i,key_value//定义两个变量

P1 = 0xFF //P1应该是宏定义

for(i=0i<4i++) // 循环,i先用再+1

{

P1 = ~(1<<i) //循环里执行P1 =i左移一位,i为局部变量没有初始化值为随机,每次进来都不一样

key_value = P1&0xF0//把P1和0xF0相与,结果给key_value

if(key_value!=0xF0) //如果值不为0xF0,进去

{

delay_us(20) //延迟20us

key_value = P1&0xF0//P1与0xF0相与,值给key_value

if(key_value!=0xF0) //两次相与后,再判断一次,如果不等于,就进来

{

key_value &= 0xF0//将key_value值每一位与1相与

switch(key_value)//判断相与后的值,执行对应 *** 作,执行完任意 *** 作都跳出switch

{

case 0x70: key_value = 15-(3-i)*4break

case 0xb0: key_value = 14-(3-i)*4break

case 0xd0: key_value = 13-(3-i)*4break

case 0xe0: key_value = 12-(3-i)*4break

default: key_value = 0x7f //没有符合以上条件默认置为0x7f

}

return key_value //返回这个值

}

}

P1 = 0xFF //在第一个if的地方如果条件不成立则让P1为0xFF,循环执行4次

}

return 0x7f //函数返回这个值

}

uchar scan_kay(void)

{

uchar key_va1,key_va2 //定义uchar类型变量两个

1 key_va1 = scan_key() //调用scan_key()函数,就是上面那个函数,返回值给key_va1

if(key_va1==0x7f)//判断这个返回值

{

return 0x7f //如果返回值为0x7f,函数返回0x7f后面的不执行

}

do//如果不等于0x7f,则当key_va1与key_va2相等的时候执行scan_key,返回值给key_va2

{

key_va2 = scan_key()

}while(key_va1==key_va2)

return key_va1 //如果不相等,则函数返回开头有1的那一行的值

}

只能看到这些,这些 *** 作使寄存器的值发生一些变化,改变硬件的状态,希望能帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11595413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存