1、 要求:单路数据采集(电位器连连接 ADC 输入)与报警通过软件(或键盘)设定报警上限值,当电位器模拟的输入值大于设定报警上限值时,通过蜂鸣器报警,并具有报警解除功能。LED 八段码能实时显示电位器模拟输入的电压值(最好为十进制数形式)。ORG 0000HLJMP STARTORG 000BHLJMP T0ZDORG 0100HSTART:MOV 30H,#11H ;显示缓冲区MOV 31H,#10HMOV 32H,#10HMOV 33H,#10HMOV 34H,#10HMOV 35H,#10HMOV 36H,#90H ;报警线MOV TMOD,#01HSETB ET0SETB EAMOV R
2、7,#29H ;显示“P-“ 延时时间XHXS: MOV R0,#35H ;显示子函数入口参数设置MOV R2,#06HMOV R3,#01HACALL DISPLYDJNZ R7,XHXS ;显示延时;开始 AD 转换AD:MOV DPTR,#9001H ;开始 AD 转换 选择通道 0MOVX DPTR,AXH:MOV R0,#35H ;显示子函数入口参数设置MOV R2,#06HMOV R3,#01HACALL DISPLYJNB P3.0,XH ;判断是否转换完毕,没有的话转移 查询方式MOV DPTR,#9001H ;转换完毕 读结果MOVX A,DPTRMOV R6,ASUBB A
3、,36HJNC AA ;结果小于(36H)转移MOV A,R6ANL A,#0FH ;处理转换结果MOV 35H,A ;存储低位MOV A,R6ANL A,#0F0HSWAP AMOV 34H,AMOV A,#10HMOV 30H,A ;存储高位LJMP ADAA:MOV TL0,#1EH ;蜂鸣器MOV TH0,#0FBHSETB TR0JB P1.2,$ ;为 0 则解除警报CLR TR0SJMP ADT0ZD:CPL P1.3MOV TL0,#1EHMOV TH0,#0FBHRETITAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7C
4、H,39H,5EH,79H,71H,40H,73H;显示子程序DISPLY:MOV A,R0 ;取一个数据MOV DPTR,#TABMOVC A,A+DPTR ;把这个数据转换成断码MOV DPTR,#8004H ;数据口地址MOVX DPTR,A ;送出数据MOV DPTR,#8002H ;位选地址MOV A,R3MOVX DPTR,A ;送出位选LCALL YANRL A ;左移位选 显示下一位MOV R3,ADEC R0 ;显示下一个数据DEC R2CJNE R2,#00H,DISPLYRET;12M 晶振 延时 5msYAN:MOV R3,#01D1:MOV R4,#250D2:DJNZ R4,D2DJNZ R3,D1RETEND