笔者开如也是学51的,对Keil也比较熟,笔者学PIC单片机时,三天就能写出数码管时钟程序(包括学PIC的硬件配置),当然这很简单,也算不上什么技术,但可以肯定的说,对单片机初学者来说,这也该算不可想像吧。笔者并不是吹虚自己多厉害,只是想说明知识的触类傍通。学AVR单片机也差不多吧,知道如何配置端口,复制个C51的程序,小改一下就可以了。
下面来介绍如何用Keil uVision3(uVision2也是一样)来建立一个流水灯程序,以及如何软件仿真。
启动Keil,如下图:

选择菜单Project->New Project,新建一个工程,如下图:
输入工程名“流水灯”,然后保存,如下图:

选择器件型号为Atmel的AT89S51,然后确定,如下图:

是否加入启动文件到工程,这时不加入选“否”,这样一个工程就建立完成,如下图:

选择菜单File->New新建一个文件,如下图:

选择菜单,File->Save,保存文件,输入文件件名为“流水灯.asm”,然后保存,如下图:

点Target 1前面的+号,展开Target 1,击Source Group 1,在弹出菜单中选择,Add Files To Group 'Source Group 1',如下图:

选择All files,找到刚才的“流水灯.asm”,然后点Add,然后就Close,如下图:

可以看到工程里多了一个“流水灯.asm”文件,双击在里面输入下面程序,如下图:
ORG 0X0000
LJMP START
START: MOV A,#0XFE
LOOP: RL A
MOV P1,A
LCALL DELAY
SJMP LOOP
;延时程序
DELAY: MOV R5,#200
OUT: MOV R6,#250
OUT1: MOV R7,#250
IN: DJNZ R7,$
DJNZ R6,OUT1
DJNZ R5,OUT
RET
END

选择Project->Build target,进行编译,如下图:

编译结果可以,看到错误和警告情况,如下图:

如果没有错误,就可以选择菜单Debug->Start/Stop Debug Session,进放调试状态,如下图:

进入调到试状态后,选择菜单Perihperals->I/O-Ports->Port 1,打开端口1,下图为打开后的画面。

选择菜单Debug->Run,运行,就可以看到端口1的变化。如下图:

如果端口变化缓慢,可以加长延时程序,如果变化快,可以缩短延时程序。
如果没有变经,可以点击菜单View->Periodic Window Update,此命令的功能是周期性的更新窗口,用以外围设备窗口显求程序的热行过程,有此情况下,如运行到断点,就要以关闭这个功能,因为程序执行的过程我们并不关心,同时也可以加快速度。
给初学者的几点建议:
谢谢大侠指点 小弟受益匪浅
太棒了,谢谢