实例介绍
将源码复制粘贴到模拟器代码框中运行run,也可以单步执行,仅支持汇编语言,
对于初学51单片机帮助很大,对理解单片机底层原理非常有用。
【实例截图】
【文件目录】
51单片机Java模拟器
├── 51单片机模拟器 电路图.jpg
├── 51单片机原理教程(经典版).pdf
├── 51单片机模拟器主界面.jpg
├── edsim51di.jar
├── edsim51diHardwareSettings.ser
├── edsim51diSettings.ser
├── edsim51examples 案例源码
│ ├── adcIndicator (2).asm
│ ├── adcIndicator.asm
│ ├── adcToDac.asm
│ ├── dac.asm
│ ├── echoSwitches.asm
│ ├── lcd.asm
│ ├── lcd.c
│ ├── lcd.hex
│ ├── lcdEuroSymbol.asm
│ ├── ledPatterns.asm
│ ├── motor.asm
│ ├── scanKeypad.asm
│ ├── serialReceive.asm
│ ├── serialTransmit.asm
│ └── sevenSegDisplays.asm
├── lib
│ └── edsim51sh.jar
└── readme.txt
2 directories, 23 files
【核心代码】
; This program sends the text abc down the
; 8051 serial port to the external UART at 4800 Baud.; To generate this baud rate, timer 1 must overflow
; every 13 us with SMOD equal to 1 (this is as close as
; we can get to 4800 baud at a system clock frequency
; of 12 Mz).
; See the notes on the serial port for more information.
; The data is sent with even parity,
; therefore for it to be received correctly
; the external UART must be set to Even Parity
CLR SM0 ; |
SETB SM1 ; | put serial port in 8-bit UART mode
MOV A, PCON ; |
SETB ACC.7 ; |
MOV PCON, A ; | set SMOD in PCON to double baud rate
MOV TMOD, #20H ; put timer 1 in 8-bit auto-reload interval timing mode
MOV TH1, #243 ; put -13 in timer 1 high byte (timer will overflow every 13 us)
MOV TL1, #243 ; put same value in low byte so when timer is first started it will overflow after 1 us
SETB TR1 ; start timer 1
MOV 30H, #'a' ; |
MOV 31H, #'b' ; |
MOV 32H, #'c' ; | put data to be sent in RAM, start address 30H
MOV 33H, #0 ; null-terminate the data (when the accumulator contains 0, no more data to be sent)
MOV R0, #30H ; put data start address in R0
again:
MOV A, @R0 ; move from location pointed to by R0 to the accumulator
JZ finish ; if the accumulator contains 0, no more data to be sent, jump to finish
MOV C, P ; otherwise, move parity bit to the carry
MOV ACC.7, C ; and move the carry to the accumulator MSB
MOV SBUF, A ; move data to be sent to the serial port
INC R0 ; increment R0 to point at next byte of data to be sent
JNB TI, $ ; wait for TI to be set, indicating serial port has finished sending byte
CLR TI ; clear TI
JMP again ; send next byte
finish:
JMP $ ; do nothing
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论