|
|
| | -文章搜索 - 最新文章 - | |
第432篇:关于自制mon51目标板 |
| 发布时间:2001年12月1日 点击次数:7476 |
| 来源: 作者: |
我曾在两所学校学过单片机两遍,但受学校教学条件限制,两次都没做单片机实验, 我在单位也不开发单片机,没有相应的实践条件,但我个人对单片机还是很感兴趣, 而市面出售的单片机开发装置颇为昂贵不值得为学一学而购置。 2000年就在“mcs51.yeah.net”见到“lusenping”制作Keil Monitor-51仿真器 成功的资料,很想试一试,但资料仍然不够详细,且没有更多成功的例子。 直到前不久访问“www.c51bbs.com”,见到有很多网友制作Keil Monitor-51印制 电路板并成功的消息,且偶然联系上“24C01”朋友并获得他做的Keil Monitor-51印制 电路版,加上“www.c51bbs.com”各网友的讨论特别是“爬爬虫”网友的体会的帮助, 经过一番奋战,终于成功!特别感谢“24C01”朋友、“www.c51bbs.com”版主及各位 网友! 常在“www.c51bbs.com”见到有的网友频繁请教成功的网友仍不能成功很着急 甚至气馁,我也曾有同感,虽然我不很精通,也很想帮一把,但我无法亲眼看不成功 的网友的安装调试过程,无法直接回答,仅就我个人在安装调试的步骤及应注意的问题 叙述一二: 相关资源: 1 2 3 一、安装MON51板 1、DB9插座必须用“公”的(针), 且必须按“C:\Keil\C51\MON51\MON51.PDF”说明第二页图示在印制板上飞线将DB9插座 的7和8脚,1和4和6脚分别短接(有些印制电路板上布好的连线并不包含该线); 如果DB9插座已经焊了“母”的(孔),建议想办法换掉(先将两固定脚的焊锡用电烙铁 融化,用吸锡器吸出,9根信号脚用电烙铁堆锡,然后乘焊锡未凝固迅速拔出, 最后清理焊盘重新焊接); 如果非要使用“母”的(孔),则不能使用市面上买的标准串口线,须自制, 印制电路板MAX232至DB9插座的连线必须划断重新飞线,并保证仍然满足 “C:\Keil\C51\MON51\MON51.PDF”说明第二页图示电气要求; 2、所有集成块处焊IC座以方便更换集成块(毕尽我们都是第一次做MON51且通常仅做 一块嘛,难免会出问题); 3、晶振用11.0592MHz,AT89C52的18和19脚至40芯扁平电缆插座的连线要划断; 4、有些Keil Monitor-51板有两个三针跳线,一个用来选择复位键是用Keil Monitor-51板的还 是目标板的; 另一个用来选择5V是用Keil Monitor-51板的还是目标板的; 5、按照印制版丝印参数安装元件,注意极性元件的方向; 6、注意74HC573(或74LS573)与74HC373(或74LS373)不可直接互换,因为虽然它们 功能相同,但引脚的功能排列不一样; 7、如果计算机空闲串口为9芯,通讯线可在市面上购买9芯标准 串行线(两头均为9芯"母"的(孔),非modem线), 也可自制,内部连线为: 5----------5 3----------2 7----------8 9芯"母"(孔)头 6----------4 9芯"母"(孔)头 2----------3 8----------7 4----------6 若电脑串口插座为老式挡板条结构,请确认内部已正确连到主板, 若电脑9芯串口已被鼠标占用,仅剩25芯串口,可在市面上购买 一头25芯一头9芯的串行线(两头均为"母"的(孔),非modem线) 或直接自制,内部连线为: 2----------2 3----------3 4----------6+8 9芯"母"(孔)头 5----------7 25芯"母"(孔)头 6+1----------20 7----------5 8----------4 也可加装一25芯("母"(孔))串口转9芯("公"(针))串口转换器,配9芯标准串行线; 用万用表确认内部连线正确; 8、可在DOS方式下在“c:\keil\c51\mon51”子目录运行“install 0 ff 0”, 即可生成MON51.HEX文件,将其用编程器写到AT89C52中,再插到印制板上; 也可直接下载“www.c51bbs.com”主页的文件“MON51.zip”, 用winzip展开其中的“MON51.HEX”,用编程器写到AT89C52中; 没有编程器的朋友可将文件“MON51.HEX”和AT89C52芯片交给单位(或个人)有 编程器的朋友帮忙;如果朋友都没有编程器,也可问问单片机编程器代理商能否帮忙, 可能需付点钱; 9、如果Keil Monitor-51板没有整流桥电路但有7805,外接电源必须用9V-12V左右的 直流适配器,并注意极性; 如果Keil Monitor-51板有整流桥电路,外接电源可用9V-12V左右的交流适配器 (如某些modem的电源适配器)或直流适配器,此时直流适配器并不需要注意极性; 通电时电源指示发光二极管应点亮,用万用表20V或以上直流电压档测7805输出 应为5V; 二、连线及设置 1、串行线一头接计算机,并记下是COM1还是COM2,另一头接Keil Monitor-51板DB9插座; 2、电源适配器接Keil Monitor-51板电源插座; 3、拔下目标板被仿真的AT89C52芯片,将仿真头擦在原来擦AT89C52的IC座上, 仿真线40芯扁平电缆插头接Keil Monitor-51板40芯扁平电缆插座上; 在没有目标板的情况下也可调试一些对端口操作的简单程序, 用万用表或发光二极管观测Keil Monitor-51板AT89C52端口电平; 4、若Keil Monitor-51板有跳线则根据自己的要求跳线, 在没有目标板的情况下,设为选择Keil Monitor-51板的复位键和5V电源; 三、软件调试 1、开机,运行Keil uVision2; 2、创建工程; 鼠标左键单击主菜单“Project”---------- 鼠标左键单击子菜单“New Project”--------- 弹出“Creat New Project”对话框--------- 用鼠标在“保存在”下拉框选择你要保存的文件夹(比如“我的文档”)---------- 在“文件名”文本框处用键盘敲入你给这个工程起的工程名(如“test1”)---------- 鼠标左键单击“保存”按键---------- 弹出"Select Device for Target 'Target1'"对话框--------- 用鼠标在左边列表框“Data Base”区双击ATMEL或单击ATMEL前的“+”号---------- ATMEL子选项展开---------- 用鼠标左键单击“89C52”---------- 用鼠标左键单击“确定”按键-------- 3、建立源程序; A、汇编程序 鼠标左键单击菜单“File”---------- 鼠标左键单击菜单“New”--------- 在新建的文本窗口(Text1)中用键盘键入你的汇编程序 ( 例如使P1.0输出高低电平的源程序: ORG 8000H LOOP: SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAY AJMP LOOP DELAY: MOV R7,#250 D1: MOV R6,#250 D2: DJNZ R6,D2 DJNZ R7,D1 ret end )------ 鼠标左键单击菜单File------ Save as--------- 在新建的文档中键入你的汇编程序-------- 弹出Save As对话框---- 用鼠标在"保存在"下拉框选择你要保存的文件夹(比如"我的文档")-------- 在“文件名”文本框处用键盘敲入你给这个工程起的工程名(如"test1.a51")-------- 鼠标左键单击“保存”按键 在左边资源管理器用鼠标左键双击“Target 1”或单击“Target 1”前的“+”号----- 鼠标右键单击Source Group-------- 弹出“Add file to Group 'Source Group 1'”------ “文件类型”选“asm source file (*.a*)”--- 找到"test1.a51"文件,鼠标左键单击该文件-------- 鼠标左键单击“Add”---- 鼠标左键单击“Close”---- 修改程序直到鼠标左键单击主菜单“Project”------ 鼠标左键单击子菜单“Built target”------ 下边窗口显示""test1"-0 Errors(s),0 Warning(s)"-------- B、C51程序 鼠标左键单击菜单“File”------ 鼠标左键单击菜单“New”---------在新建的文本窗口“Text 1”中用键盘键入 你的C51程序 ( /*------------------------------------------------------------------------------ HELLO.C Copyright 1995-1999 Keil Software, Inc. ------------------------------------------------------------------------------*/ #include /* for the intended 8051 derivative */ #include #ifdef MONITOR51 /* Debugging with Monitor-51 needs */ char code reserve [3] _at_ 0x23; /* space for serial interrupt if */ #endif /* Stop Exection with Serial Intr. */ /* is enabled */ /*------------------------------------------------ The main C function. Program execution starts here after stack initialization. ------------------------------------------------*/ void main (void) { /*------------------------------------------------ Setup the serial port for 1200 baud at 16MHz. ------------------------------------------------*/ #ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */ TR1 = 1; /* TR1: timer 1 run */ TI = 1; /* TI: set TI to send first char of UART */ #endif /*------------------------------------------------ Note that an embedded program never exits (because there is no operating system to return to). It must loop and execute forever. ------------------------------------------------*/ while (1) { P1 += 0x01; /* Toggle P1.0 each time we print */ //My Add // delay();//大约二秒 // P1=0xff; // delay(); //My Add // printf ("Hello World\n"); /* Print "Hello World" */ } } )------ 鼠标左键单击菜单file------ save as--------- 在新建的文档中键入你的汇编程序-------- 弹出Save as对话框---- 用鼠标在"保存在"下拉框选择你要保存的文件夹(比如"我的文档")-- 在“文件名”文本框处用键盘敲入你给这个文件起的文件名(如"testc51.c51")-------- 鼠标左键单击左边列表框Target1----- 鼠标右键单击Source Group-------- 弹出Add file to Group 'Source Group 1'------ 文件类型选c source file (*.c)--- 找到"testc51.c51"鼠标左键单击该文件-------- 鼠标左键单击"add"------- 找到"C:\KEIL\C51\LIB\Startup.a51"鼠标左键单击该文件-------- 鼠标左键单击"add"---- 鼠标左键单击"close" -------- 将 "Startup.a51"的"CSEG AT 0"改为"CSEG AT 08000H" 修改程序直到鼠标左键单击菜单“Project”------ 鼠标左键单击子菜单“Built target”------ 下边窗口显示""test1"-0 Errors(s),0 Warning(s)" 4、设置参数; 用鼠标左键单击主菜单“Project”------ 用鼠标左键单击子菜单“Options for Target 'Target1'”-------- 弹出“Options for Target 'Target1'”对话框------ 在“Target”标签下修改“Xtal(Mhz)”为“11.0592”-------- 在“Output”标签下,选中“Create HEX file”(如果你要生成hex文件用编程器写到目标板的 89C52单片机中)------- 在“C51”标签下修改“Interrupt vectors at address”为“0x8000”---- 在“BL51 Locate”标签“Code”中填入“0x8000”------ 在“debug”标签选中“Use keil monitor-51 driver”-------- 用鼠标左键单击"Setting"按键------- 根据你用的串口用鼠标选择Port------ 左键单击"ok"按键---- 选中“Load Application at Start”--------- 选中“Go till main()”--- 用鼠标左键单击"确认"按键------- 其余缺省 5、仿真调试; 用鼠标左键单击主菜单“Debug”------ 用鼠标左键单击子菜单“Start/Stop Debug Session”---- 用鼠标左键单击主菜单“Peripheral”---- 用鼠标移到子菜单“I/O - Ports”---- 用鼠标左键单击子菜单“Port1”--- 用鼠标左键单击子菜单“View”--- 用鼠标左键单击子菜单“Periodic Window Update”--- 切换到你的源程序窗口---- 将光标移到开头的一条可执行语句上---- 用鼠标左键单击主菜单“Debug”------ 用鼠标左键单击子菜单“Run to Cursor line”------ 用鼠标左键单击子菜单“Step”---- 或用鼠标左键单击子菜单“Insert/Remove break point”----- 用鼠标左键单击子菜单“Go”-------- 重复“Step”或“Insert/Remove break point”“Go”; 用万用表测AT89C52的P1.0(即1脚)的电压是否和程序及"parallel port 1"窗口一致; 停止debug用鼠标左键单击主菜单“Debug”------ 用鼠标左键单击子菜单“Start/Stop Debug Session” 注意:每次重新“debug”前要按一下复位键; 四、目标板独立运行 1、确认程序调试通过后,若为汇编汇编程序则将“ORG 8000”改为“ORG 0”, 若为C51程序则将“Startup.a51”中“CSEG AT 08000H” 改回“CSEG AT 0H”, 鼠标左键单击菜单“Project”------ 鼠标左键单击子菜单“Built target”------ 下边窗口显示""test1"-0 Errors(s),0 Warning(s)" 2、将生成的文件“工程名.HEX”用编程器写入目标板51单片机,将其插回目标板 原处,通电独立运行; 说明较繁锁,难免有错误或遗漏,仅供参考,有错误或遗漏欢迎指出 |
|
|
|
|
[单片机] 相关文章: 请问软件仿真时,如何从串口输入hex数。比如:0xff,0xaa,0xcc简介: 请问软件仿真时,如何从串口输入hex数。比如:0xff,0xaa,0xcc 标准51 MCU的话,命令行中输入:SIN=0xff即可;否则,先在命令行中输入:DIR VTREG,找出输入缓冲器的名称,再如法炮制即可 ...... 定义 db 7eh,bdh,dbh,e7h,e7h,dbh,bdh,7eh 错在哪里? mov a,@a+dptr错在哪里? W77E58 的PWR 寄存器的CD0,CD1位语义? register int i,k;??? |
|
|
|