ppeter:
STC12C5410AD和STC11F32AD是8051的兼容单片机我再做了查询方式和中断方式的实验发现很奇怪的现象STC11F32AD在中断方式时是正确的其他都不行到底是怎么回事?以下是查询方式和中断方式的程序请大家帮帮忙非常感谢!STC12C5410AD:988098809E8080808680F880FE80E080E68018001E00STC11F32AD:0A0B0A0B08090E0F0C0D0203 JMPMAIN ORG30HMAIN: MOVSP,#070HMOV SCON,#050H;控制状态字 MOVTMOD,#020H;T1作波特率发生器MOV TH1,#0FDH ;选定波特率9600MOV TL1,#0FDHSETB TR1SETB EA ;开串行口中断SETB ESCLRTI;1.查询方式:MOVR0,#00TRAM:MOVA,R0 ;取数据XRLA,#10DJZENDD MOVSBUF,A ;发送一个字符WAIT:JBCTI,NEXT;等待发送结束SJMPWAITNEXT:INCR0 ;准备下一次发送SJMPTRAMENDD:NOPNOPSJMPENDDEND----------------------------------------------------------STC12C5410AD:00060018001E006000660078007E00808086809880STC11F32AD:000102030405060708090A (这个是正确的)JMPMAINORG0023H;串行口中断入口AJMP SINT ORG30HMAIN: MOVSP,#070HMOV SCON,#050H;控制状态字 MOVTMOD,#020H;T1作波特率发生器MOV TH1,#0FDH ;选定波特率9600MOV TL1,#0FDHSETB TR1SETB EA ;开串行口中断SETB ESCLRTI;2.中断方式:TRAM:MOVR0,#00MOVA,R0 ;取数据MOVSBUF,A ;发送第一个字符H:SJMPH ;其它工作SINT:CLR TI ;中断服务程序XRLA,#10DJZHHINCR0MOVA,R0 ;取数据MOVSBUF,A ;发送下一个字符HH:RETIEND