当前位置: 主页 > 科技内涵 >尔玛依娜_基于单片机80c51使用汇编语言编写一个简单程序(最好使用keil软件) >

尔玛依娜_基于单片机80c51使用汇编语言编写一个简单程序(最好使用keil软件)

基于单片机80c51使用汇编语言编写一个简单程序(最好使用keil软件)


汇编语言适用于单字节编程,你那题太麻烦了。用C语言就方便多了。采纳答案是答非所问。

C语言,调用汇编,才是高层次。

不用汇编,偏爱用C,明显是瘸腿。
求用89c51单片机,汇编语言,keil编写程序 电子密码锁设计 1、6位密码锁。使用矩阵键盘与数
楼主的题目,规模较大。
在这里,一般难以得到较理想的程序。

可以到百度文库搜一下。
设80C51单片机晶振频率为12MHZ,定时器作计数器使用时,其最高的输入计数频率应为?

的输入技术频率应为500khz。计算方确认一次记数,即一次负跳需要2个机期,即24个时钟周期或震荡周期,则最高记数频率为12M/24=500khz。或者按照时间计算,晶振频率12M的2个机器周期即2us,那么频率就是1/2*10^6=500khz,结果相同。扩展资料:80C51单片机的嵌入式原理:梯形图语言可以“一句顶一万句”,也可以“一句顶一句”。比如把一个字节或字从一个地址移动到另一个地址,这实际和汇编语言的一条指令等同。因此梯形图也可以作为普通的程序开发语言使用。嵌入式软件的开发平台使用梯形图语言的其他功能和PLC类似, 便于“计算机外行”来编程,梯形图语言在处理计算、字符等方面显然落后于其他的软件开发系统。没有必要回避梯形图编程语言的这些缺点。这也是有一利必有一弊。诚然,用开发平台提供指令(元件)也能完成嵌入式系统的编程,但一般不提倡这么做。用梯形图语言编程,应尽量使用系统提供的代码,尽量少的自己编程,让绝大多数代码由系统提供。这样即提高了效率,降低了成本,也保证了程序运行的可靠性。使用“一句顶一句”编程时,是没有办法的办法。当然,必要时,也必须使用。这也增加的编程的灵活性和扩大了平台的使用范围。其实我们把各种处理方式使用C语言、汇编语言或其他语言事先编好,放在平台中供给客户使用。客户使用梯形图语言编程,实际都是调用这些用其他语言编好的模块而已。参考资料来源:百度百科-80C51

要知道,确认一次记数,一跳变,需要2个机器周期,即24个时钟或震荡周期,则最高记数频率为12M/24=500khz;或者按照时间计算,晶振频率12M的2个机器周期即2us,那么频率就是1/2*10^6=500khz,结果一样。本回答被提问者采纳最快计数频率应该是单指令周期的倒数,晶振为11.0592M时,单指令周期是1us,12M时应该是11.0592/12us,它倒数是1085069HZ。追问

最高计数频率!已经有满意答案了
用单片机80c51或80c52汇编语言设计时间计时器的硬件及相关软件


;实用机电子钟的制作
;主程序MAIN),如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME

ORG 0300H
MAIN:
mov 20h,#00h
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV IP,#02H ;IP,IE初始化
MOV IE,#82H
MOV TMOD,#01H ;设定定时器工作方式?
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0 ;启动定时?
MOV SP,#40H ;堆栈指针
NEXT: LCALL DISP ;调用显示子程序?
LCALL KEY ;调用按键检测子程序
JZ NEXT ;
LCALL ANKEY ;调用按键处理子程序
SJMP NEXT ;重新循环
NOP
NOP
NOP
;定时中断处理程序:
TIME: PUSH ACC ;保护现场
PUSH PSW
MOV TL0,#0B4H ;赋定时初值
MOV TH0,#3CH
INC 20H ;
MOV A,20H
CJNE A,#20,RETI1
MOV 20H,#00H ;一秒钟时间到
MOV A,21H
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,RETI1
MOV 21H,#00H ;一分钟时间到
MOV A,22H
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,RETI1
MOV 22H,#00H ;一小时时间到
MOV A,23H
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,RETI1
MOV 23H,#00H ;到时间达到24小时,清零.
RETI1: POP PSW ;恢复现场
POP ACC
RETI ;中断返回?
NOP
NOP

;显示子程序
DISP: ANL 2FH,#10H ;处理小数点
MOV A,21H ;处理秒21H-->2DH,2EH
ANL A,#0FH
ORL A,2FH
MOV 2FH,A
MOV A,21H
ANL A,#0F0H
SWAP A
MOV 2EH,A
ANL 2DH,#10H
MOV A,22H ;处理分钟22H-->2CH,2DH
ANL A,#0FH
ORL A,2DH
MOV 2DH,A
MOV A,22H
ANL A,#0F0H
SWAP A
MOV 2CH,A
ANL 2BH,#10H
MOV A,23H ;处理小时23H-->2AH,2BH
ANL A,#0FH
ORL A,2BH
MOV 2BH,A
MOV A,23H
ANL A,#0F0H
SWAP A
MOV 2AH,A
MOV R0,#2FH ;显示偏移量
MOV R3,#06H
MOV DPTR,#TABLE
MOV A,#0BFH
LOOP1: MOV B,A ;
MOV P2,a
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,a ;送显示
MOV R2,#80H ;延时
DJNZ R2,$
DEC R0
MOV A,B
RR A
DJNZ R3,LOOP1 ;循环显示
RET

TABLE: db 28h,7eh,0a2h,62h,74h,61h,21h ;不带小数点
DB 7ah,20h,60h,00,00,00,00,00,00
DB 8H,5eH,82H,42H,54H,41H,1H,5aH ;带小数点
DB 00H,40H,00,00,00,00,00,00
NOP
NOP
;按键判断程序
KEY: MOV P3,#0FFH ;
MOV A,P3
CPL A
ANL A,#3CH
JZ RETX ;无键按下则返回
LCALL DISP ;
LCALL DISP
MOV A,P3
CPL A
ANL A,#3CH
JZ RETX ;键盘去抖动。
MOV R6,A ;将键值存入R6。
LOOP2: LCALL DISP ;
MOV A,P3
CPL A
ANL A,#3CH
JNZ LOOP2 ;等待键释放
MOV A,R6
RETX: RET
NOP
NOP
;按键处理子程序
ANKEY: CLR EA ;关中断
LX: MOV A,R6
JB ACC.2,L1 ;是功能键转L1
JB ACC.3,L2 ;是确认键转L2
JB ACC.4,L3 ;是减1键转L3
JNB ACC.5,L12 ;不是增1键,转L12
JB 2BH.4,L6 ;判断使哪一位(时、分、秒)的值加1
JB 2DH.4,L8
JB 2FH.4,L9

L12: LCALL DISP
LCALL DISP
LCALL KEY ;判断有无键按下。
JZ L12
LJMP LX

L2: MOV 25H,#00H ;确认键处理程序
CLR 2BH.4
CLR 2DH.4
CLR 2FH.4
SETB EA
RET

L3: JB 2BH.4,L61 ;增一键处理程序
JB 2DH.4,L81
JB 2FH.4,L91
AJMP L12

L1: MOV A,25H ;功能键处理程序
JZ LB1
JB ACC.0,LB2
JB ACC.1,LB3
JNB ACC.2,L12
LB1: MOV 25H,#01H ;25H单元是标志位,(25H)=01H调节时单元的值
SETB 2BH.4
CLR 2DH.4
CLR 2FH.4
AJMP L12

LB3: MOV 25H,#04H ;25H单元是标志位,(25H)=01H调节秒单元的值
SETB 2FH.4
CLR 2DH.4
CLR 2BH.4
AJMP L12

LB2: MOV 25H,#02H ;25H单元是标志位,(25H)=01H调节分单元的值
SETB 2DH.4
CLR 2BH.4
CLR 2FH.4
AJMP L12

L61: AJMP L611 ;
L81: AJMP L811 ;
L91: AJMP L911
L6: MOV A,23H ;时加一
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,L15
L15: JC L112
MOV 23H,#00H
L112: AJMP L12

L8: MOV A,22H ;分加一
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,L16
L16: JC L112
MOV 22H,#00H
AJMP L12

L9: MOV A,21H ;秒加一
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,L17
L17: JC L112
MOV 21H,#00H
AJMP L12

L611: MOV A,23H ;时减一
ADD A,#99H
DA A
MOV 23H,A
CJNE A,#99H,L112
MOV 23H,#23H
AJMP L12

L811: MOV A,22H ;分减一
ADD A,#99H
DA A
MOV 22H,A
CJNE A,#99H,L112
MOV 22H,#59H
AJMP L12

L911: MOV A,21H ;秒减一
ADD A,#99H
DA A
MOV 21H,A
CJNE A,#99H,L112
MOV 21H,#59H
AJMP L12
NOP
NOP
END楼上回答的还笑,跟BIOS有锤子关系,.....
软时钟,就用8051的定时器功能就能实个简单的电子钟,完全能满足你的功能....
不过小子,虽然这是个很简单的东西,不过没几个人愿意去帮你搞,真是搞起来还是很麻烦...楼主在网上努力找吧,应该可以找到日历时钟程序好像是在BIOS里面有中断可以调用的.


上一篇:
下一篇:

中国科学技术馆|科技馆|中国科技馆
科技内涵|科技企业|科技园区|科技导读|网站地图