谁会嵌入式 数码管代码注释啊,急急急?

谁会嵌入式 数码管代码注释啊,急急急?,第1张

#include <unistd.h>

#include <stdio.h>

#include <fcntl.h>

//设置fd和fd1的初始值为-1

static int fd = -1

static int fd1 = -1

//定义数码管显示0-9所对应的段码

unsigned char seg7table[16] = {

/* 0 1 2 3 4 5 6 7*/

0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,

/* 8 9 AB C D E F*/

0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,

}

//定义数码管显示所对应的位选码

unsigned char led[16] = {0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}

int main()

{

int i=0

fd=open("/dev/cpldled",O_RDWR)//打开文件cpldled

if(fd<0) /裂顷/如果打开不成功禅渣,则提示Can't open,然后返回-1,成功则提示open Ok

{

printf("Can't open\n")

return -1

}

else

{

printf("open OK %x\n", fd)

}

fd1=open("/dev/seg",O_RDWR)

if(fd1<0)

{

printf("Can't open\n")

return -1

}

else

{

printf("open OK %x\n", fd1)

}

while(1)

{

//以下就是实现0-9的显示。

for(i=1i<9i++)

{

ioctl(fd1, 0, seg7table[i]) //把seg7table[]数肆袭陆组中的送逐个送到端口

ioctl(fd, 1,led[i])//把位选码依次送到端口

sleep(1)//延时

}

}

close(fd) //关闭文件

close(fd1)

return 0

}

void Delay1000us() { unsigned char i, j//延时等等1毫秒

i = 2j = 239//下面需要做双咐握重循环,其中外循环2次,内循环239次

do{

while(--j)//每次内循环做一次减法和一次判断

} while(--i)//每次外循环做一次减法和一次判断

}

正如函数名写明的大体上可以认为,在当前的时钟频率下,经过衡橘庆测试,做上述这么多次的运算(执行语句次数)会耗时伍皮1毫秒。

CLK EQU P1.0定义端口P1.0在该程序中用CLK表示

HEIPING:MOV R0,#40 r0=40 BLACK子程序入口参数

LCALL BLACK 调用BLACK

LP: MOV R6,#0 r6=0

MOV R3,#16 r3=16决定BEGIN子程序执行次数

MOV A,#0 a=0

BEGIN: MOV DPTR,#MyZiKu dptr=MYZIKU(首地址)

MOVCA,@A+DPTR a=欲显示字符的字形码

LCALL SHOW 调用SHOW程序(显示)

LCALL DELAY 调用DELAY程序(延时)

INC R6 r6加1

MOV A,R6 a=r6

DJNZR3,BEGIN r3减1不为0转移到BEGIN

BEGIN这一段程序的作用是在LED上每隔DELAY程序设定的时间按顺序显示0~F 循环16次

LJMPLP 转移到LP执行

延时程序铅敬 r0 r1 r2决定延时时间

DELAY: MOV R0,#0FFH r0=255

DLP:MOV R1,#0FFH r1=255

DLP1: MOV R2,#04H r2=4

DJNZR2,$ r2减1不为0仍在该行再次执行

DJNZR1,DLP1 r1减1不为0转到DLP1

DJNZR0,DLP r0减1不为0转到DLP

RET 退出

显示程序 该程序将循环8次显示一个字符

SHOW: MOV R0,#8 r0=8

SLP:CLR CLK P1.0输出低电平

RRC A 将存放在A中欲显示的字符码右移一位(最低位存入C)

MOV A_B,C A_B(未见到你程序中定义 应是个端口)=C

SETBCLK P1.0输出高电平

DJNZR0,SLP r0减1不为0转到SLP 继续输出字形码

RET

该程序循环40次 P1.0输出40个芦竖脉冲 同时端口A_B持续输出低电平

BLACK: CLR CLK P1.0输出低电平

CLR A_B A_B(未见到你程序中定义 应是个端口)输出低电槐哗慎平

SETBCLK P1.0输出高电平

DJNZR0,BLACK r0减1不为0转到BLACK

RET

0~F的字形码

MYZIKU:

DB 77H,06H,0B3H,97H,0C6H"0,1,2,3,4"

DB 0D5H,0F5H,07H,0F7H,0D7H "5,6,7,8,9"

DB 0E7H,0F4H,71H,0B6H,0F1H,0E1H "A,B,C,D,E,F"

0101 0000 1289 1488 R4H5 Q533


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存