❶ 用8051单片机编写一个闹钟程序,先设置时间,然后中断开始计数,如果时间到了,则报警,但是程序有问题
通过了,自己对照看看问题出在哪里。
ORG 00H
LJMP MAIN
ORG 0003H
LJMP EINT0
ORG 0013H
LJMP EINT1
ORG 1BH
LJMP TIMER1
ORG 0100H
MAIN:SETB EA;开所有中断
SETB PX0;使int0为高级中断,start(int0高于1)
SETB PX1;使int1为高级中断,pause
SETB IT0;int0负边沿触发
SETB IT1;int1负边沿触发
MOV SP,#60H;给指针设置初始地址
MOV R0,#00H;初始化R0
MOV R1,#00H
READY:MOV A,#00000011B;开始输入数值,并使用P1.0和P1.1
MOV P1,A
MOV A,P1;读键盘状态
JB ACC.0,L1;若ACC.0为1,跳转至L1,否则个位键按下执行下条指令
LCALL PROM0;若个位键按下,则跳转RPOM0,并返回R0
L1:JB ACC.1,L2;若ACC.1为1,跳转至L2,否则个位键按下执行下条指令
LCALL PROM1;若十位键按下,则跳转RPOM1,并返回R1
L2:MOV DPTR,#DTAB;数据表格起始地址送DPTR
MOV A,R0;把R0里的数给A,用于查表偏移量
MOVC A,@A+DPTR;查表后相应数值给A
MOV P0,A;送P0口显示
MOV A,R1;把R1里的数给A,用于查表偏移量
MOVC A,@A+DPTR;查表后相应数值给A
MOV P2,A;送P2口显示
LCALL READY;跳转回READY检查是否有按键再次按下
DTAB:DB 3FH,06H,5BH,4FH,66H;共阴极数码管从0~9表
DB 6DH,7DH,07H,7FH,6FH
PROM0:LCALL DY12MS;防抖动
INC R0;若个位键按下,则使R0+1
CJNE R0,#0AH,CTN;如果R0=10,则执行下一条指令,否则跳转
MOV R0,#00H;给R0重置0
CTN:RET
PROM1:LCALL DY12MS
INC R1;若个位键按下,则使R1+1
CJNE R1,#06H,CNT;如果R1=6,则执行下一条指令,否则跳转
MOV R1,#00H;给R1重置0
CNT:RET
DY12MS:MOV R7,#18H;延时12MS子程序
DYMS1:MOV R6,#0FFH
DYMS2:DJNZ R6,DYMS2
DJNZ R7,DYMS1
RET
EINT0:PUSH ACC
PUSH PSW
CLR TR1
POP PSW
POP ACC
SETB EX0
RETI
EINT1:ANL TMOD,#0FH;计数器置为方式1,定时器模式,与INT0有关
ORL TMOD,#90H
MOV TH1,#3CH;装入时间常数,0.05S
MOV TL1,#0AFH
MOV B,#0AH;
MOV A,R1;
MUL AB;把十位分乘十
ADD A,R0;
MOV B,#120;0.05s*2*60
MOV R3,A
MOV R4,B
SETB TR1;启T1计数
LOOP:CJNE R4,#00H,LOOP;每当过1分钟后,才进入R3
CJNE R3,#00H,L3;
SETB P3.0;让P3.0口为1,输出高电压给蜂鸣器
LCALL DY2S;让蜂鸣器鸣叫2S
RETI
L3:CLR P3.0;输出低电平,使蜂鸣器不工作
SJMP LOOP
TIMER1:CLR TR1;关计数控制位
DEC R4;
CJNE R4,#00H,L4;R4不为零,则R3不减
DEC R3;
L4:MOV TL1,#0AFH;装入时间常数
MOV TH1,#3CH;
SETB TR1;开计数控制位
RETI
DY2S:MOV R7,#200;延时2S子程序
DY2S1:MOV R6,#20
DY2S2:MOV R5,#124
DY2S3:DJNZ R5,DY2S3
DJNZ R6,DY2S2
DJNZ R7,DY2S1
RET
END
❷ 两单片机串行通信问题
仿真的时候没有问题,基本上就是硬件上没搞好了.
重点检查EA脚 有没接+
晶振是否正常? 单片机,8255复位是否正确?
还有低级错误:线有没连错?短路?供电正常 不?....
❸ keil 单片机程序求纠错!!!undefined identified!!!!
未定义的标识符,一般都是拼写错了。注意大小写,数字0与字母o,数字1与字母l。
❹ [急!]我用proteus仿真单片机通过锁存器控制数码管进行动态显示,但数码管却没任何反应。程序在实验板已验
亲,你用的P0口,上电是高阻态,要接上拉电阻,就是再放一个排阻respack,其中的1接电源,其它八个管脚分别接到P0口的管脚上
❺ 网上的 汇编16*32点阵程序不知道74HC154接单片机哪几个脚
应该是74HC164吧,程序中好像看不到你有用到164的管脚哦,其实如果程序中有定义到164的输入的话,只需要为164的两个输入信号定义单片机的其中两个管脚就行了(但最好不要用P0口,P0口要加上上拉电阻的),例如定义P1.0,P1.1,然后硬件上把这两个管脚跟164的对应输入口接上就行了。
❻ dtab d-01h移动能用吗
当译码器选中8255芯片的片选后,8255的地址线A1和A0将作为芯片内部4个端口的选择。
A1A0=00 CPU选择8255的PA口,当A1A0=01 CPU选择8255的PB口,当A1A0=10 CPU选择8255的PC口;当A1A0=11 CPU选择8255的控制端口; 结论:无论单片机用哪2个的低位地。
❼ 一,在word2003中,用按键方法选定列文本块的操作是同时按()键和方向键 A,Ctrl;B,shift;C,alt;Dtab,
在word2003中,用按键方法选定列文本块的操作是同时按Ctrl键和方向键;因此答案选择A;
Word2003中提供了许多易于使用的文档创建工具,同时也提供了丰富的功能集供创建复杂的文档使用。哪怕只使用 Word 应用一点文本格式化操作或图片处理,也可以使简单的文档变得比只使用纯文本更具吸引力。
(7)单片机中dtab是多少扩展阅读:
Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.doc)成为事实上最通用的标准。Word文件格式的详细资料并不对外公开。Word文件格式不只一种,因为随Word软件本身的更新,文件格式也会或多或少的改版;
新版的格式不一定能被旧版的程序读取(大致上是因为旧版并未内建支援新版格式的能力)。微软已经详细公布Word 97的DOC格式,但是较新的版本资料仍未公开,只有公司内部、政府与研究机构能够获知。业界传闻说某些Word文件格式的特性甚至连微软自己都不清楚。
其他与Word竞争的办公室作业软件,都必须支援事实上最通用的Word专用的档案格式。因为Word文件格式的详细资料并不对外公开,通常这种兼容性是借由逆向工程来达成。许多文字处理器都有汇出、汇入Word档案专用的转换工具,譬如AbiWord或OpenOffice。
❽ 单片机字母显示
从DISP知道,这是一个显示子程序
从SJMP DISP知道,这个是一个死循环,不停的在显示
那么显示在哪里
从P1可知,应该是P1口接了数码管。
那么显示了什么?
从#3CH可知,接了共阴极数码管
显示的是字母“b”且小数点不亮(可查阅段选码)
然后为什么这里是一个死循环?
应该是程序中有中断,一直在等待中断跳出。
SJMP DISP 跳到DISP:MOV P1,#3CH 这句,DISP是一个标号。也就是如果没有中断产生
那就一直在执行
DISP:MOV P1,#3C
-----SJMP DISP
可以看到你的程序是有中断的
MOV IE,#85H中断开放
-----SETB PX1
-----SETB IT0
-----SETB IT1