永发信息网

请解释一下以下单片机程序的意思

答案:1  悬赏:20  手机版
解决时间 2021-04-11 23:51

特别是void tsled(void) 函数里的AC==1那部分 请分析详细一点 还有ts0左移一位有什么用?(这段程序是用DTLED-6芯片驱动数码管的,其中DTLED-6的用法和MC14499芯片类似)

#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_()
sbit en =P1^7;
sbit dout=P1^6;
sbit clk=P1^3;
uchar dispbuf[9];
void delay (uint value)
{
while (value!=0) value--;
}

//串行发送DTLED-6显示
//dispbuf0-dispbuf1-dispbuf2-dispbuf3-dispbuf4-dispbuf5-dispbuf6-dispbuf7-dispbuf8
// 小数点 - 数码管1- 数码管2- 数码管3- 数码管4- 数码管5- 数码管6-ID识别码-BZ识别码
//00000xxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx
//小数点=1~6,其它为不显示
//数码管1-6=0~15,
//ID识别码=0~15
//BZ识别码=BZ.3为蜂鸣输出控制位,0=关闭,1=打开
// BZ0~2为蜂鸣频率输出设定为,000=不分频, 最高频率输出=4800Hz;
// 001=一次分频,频率输出=4800/ 2 =2400Hz;
// 010=二次分频,频率输出=4800/ 4 =1200Hz;
// 011=三次分频,频率输出=4800/ 8 =600Hz;
// 100=四次分频,频率输出=4800/ 16=300Hz;
// 101=五次分频,频率输出=4800/ 32=150Hz;
// 110=六次分频,频率输出=4800/ 64=75Hz;
// 111=七次分频,频率输出=4800/128=38Hz;
//======================================================================
void tsled(void)
{
char ts0,i,j;
clk=0;
en=0;
delay(10);
for(j=0;j<9;j++)
{ ts0=dispbuf[j];
for(i=0;i<4;i++)
{
clk=1;
ts0=ts0<<1;
if(AC==1) dout=1;
else dout=0;
clk=0;
nop;
delay(3);
}
}
en=1;
}

void main(void)
{
uchar i,j,dat=0;
dispbuf[7]=0x01;
dispbuf[8]=0x00;
while(1)
{
for(i=1;i<=6;i++)
{
dispbuf[0]=i;
tsled();
delay(50000);
}
dispbuf[0]=0x00;
for(i=0;i<3;i++)
for(j=1;j<=6;j++)
{
dispbuf[j]=dat++;
tsled();
delay(50000);
}
}
}
我明白了再给分

最佳答案
Z7279 EQU 0FF82H ;7279 状态/命令口地址
D7279 EQU 0FF80H ;7279 数据口地址
LEDMOD EQU 00H ;左边输入 八位字符显示
;外部译码键扫描方式,双键互锁
LEDFEQ EQU 2FH ;扫描速率
LEDCLS EQU 0C1H ;清除显示 RAM
LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址
READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字

ORG 0000H
AJMP START
ORG 0040H
START:
MOV SP,#60H
LCALL INIT7279 ;初始化7279
MOV R3,#0H ;第一次输入的值
MOV R2,#0H ;第二次输入的值
MOV R7,#0H ;结果
MOV R6,#0FFH ;标志
LCALL DIS_mS ;调用显示LED灯最后两位

WAIT:
LCALL GETKEY ;读键盘
CJNE A,#0FFH,CONT ;判断是否有键输入
MOV A,B
CJNE A,#3CH,KEY_A ;输入键是'C',转CLEAR_T
LCALL CLEAR_T
KEY_A: CJNE A,#3AH,KEY_D ;输入键是'A',转START_T
LCALL START_T
KEY_D: CJNE A,#3DH,KEY_B ;输入键是'D',转SET_T
LCALL SET_T
KEY_B: CJNE A,#3BH,WAIT ;输入键是'B',转DENGYU
LCALL DENGYU
CONT: CJNE R6,#0FFH,WAIT ;若判断标志则循环
LCALL DISPLAY
MOV R6,#0 ;清标志
SJMP WAIT ;循环

CLEAR_T: ;显示清零子程序
MOV R3,#0H ;第一次输入的值清零
MOV R2,#0H ;第二次输入的值清零
MOV R6,#0FFH ;置判断标志
RET
回答人的补充 2009-06-27 17:58 接上面
DENGYU: ;显示加法结果
MOV A,R7
ANL A,#0FH
ADD A,#10H
MOV R5,A
MOV R4,#2
LCALL DISLED
MOV A,R7
SWAP A
ANL A,#0FH
MOV R5,A
MOV R4,#3
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
某兴趣小组为探究活泼金属与酸反应的规律,将
光大银行卡问题
卫康3c多功能隐形眼镜护理液的保质期是多少?
新宜白大道加油站地址在哪,我要去那里办事
农村淘宝现在怎么样,淘宝网店现在怎么样?
为什么我安装不了5.7的补丁?
单选题“百日维新”的措施不包括A.提倡官民上
为什么做蹲下起立的时候我的膝盖会痛?
谁送我1个QQ音速种子!!谢谢~
坚美铝材肇庆沙记经销点这个地址在什么地方,
人临死前最想做的是什么事?
玉蝶牌电线最新价格多少钱100米啊
神往舟笔记本换全部键盘要多少钱?
问问怎样能更快的升级?
为什么我300M的无线路由搜索到的速度总只有65
推荐资讯
爱情会有长久吗
驾驶员从业资格证需要年检吗?
请高手帮下!!!
小学数学方程
麦迪恢复了为什么老板不让他上场比赛。
独立自主和自力更生是何时提出的
贺军翔的呼叫大明星什么时候可以上映啊
夸女生腿长的幽默句子,用夸张句子形容腿长
请人修理用英语怎么说,维修人员用日语怎么说?
黄渤为什么拒绝周星驰,周星驰电影中的9527是
怎么打五笔,五笔怎么打
甲留是否会暴发大面积的疫情?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?