《片机原理与应用技术重点程序高惠芳课件》由会员分享,可在线阅读,更多相关《片机原理与应用技术重点程序高惠芳课件(90页珍藏版)》请在金锄头文库上搜索。
1、传送类指令举例:传送类指令举例: 例例例例3 311已已已已知知知知(R0R0)=30H=30H,问问问问执执执执行行行行如如如如下下下下程程程程序序序序,A A、R4R4、30H30H和和和和31H31H单元的内容是什么。单元的内容是什么。单元的内容是什么。单元的内容是什么。MOV A MOV A , #10H#10HMOV R4 MOV R4 ,#36H#36HMOV R0 MOV R0 ,#7AH#7AHMOV 31H MOV 31H ,#01H#01H80518051执行上述指令后的结果为:执行上述指令后的结果为:执行上述指令后的结果为:执行上述指令后的结果为:(A A)=10H =1
2、0H (R4R4)=36H =36H (30H30H)=7AH =7AH (31H31H)=01H=01H片机原理与应用技术重点程序高惠芳课件 例例例例3 322设设设设内内内内部部部部RAMRAM中中中中30H30H单单单单元元元元的的的的内内内内容容容容为为为为40H 40H ,40H40H单单单单元元元元的的的的内内内内容容容容为为为为10H10H,P1P1口口口口作作作作输输输输入入入入口口口口,其其其其输输输输入入入入数数数数据据据据为为为为0CAH0CAH,程程程程序序序序及及及及执执执执行行行行后的结果如下:后的结果如下:后的结果如下:后的结果如下:MOV R0MOV R0,#3
3、0H #30H ;单元地址;单元地址;单元地址;单元地址30H30H送送送送R0R0中中中中MOV A MOV A ,R0 R0 ;R0 R0 间址,将间址,将间址,将间址,将30H30H单元内容送单元内容送单元内容送单元内容送A AMOV R1 MOV R1 ,A A ;A A送送送送R1R1MOV B MOV B ,R1R1 ;R1R1间址,将间址,将间址,将间址,将40H40H单元内容送单元内容送单元内容送单元内容送B BMOV R1MOV R1,P P 1 1 ;将;将;将;将P1P1内容送内容送内容送内容送40H40H单元单元单元单元MOV P2 MOV P2 , P1 P1 ;将;
4、将;将;将P1P1内容送内容送内容送内容送P2P2 执执执执行行行行结结结结果果果果:(R0)=30H (R0)=30H , (R1R1)=40H =40H , (A A)=40H =40H , ( B B) =10H =10H , ( P1P1) =0CAH =0CAH , ( 40H40H) =0CAH =0CAH , (P2)=0CAH(P2)=0CAH片机原理与应用技术重点程序高惠芳课件 例例例例3 355 已已已已知知知知外外外外部部部部RAM RAM 20202020HH单单单单元元元元中中中中有有有有一一一一个个个个数数数数X X, 内内内内部部部部RAM RAM 20H20H单
5、单单单元元元元一一一一个个个个数数数数Y Y,试试试试编编编编出出出出可可可可以以以以使使使使它它它它们们们们互互互互相相相相交交交交换换换换的的的的程程程程序。序。序。序。 解:解:解:解: MOV P2MOV P2 , # #2020H H MOV R1 MOV R1 , # #2020HH MOVX A MOVX A , R1 R1 XCHXCH A A , R1R1 MOVX R1 MOVX R1 ,A A SJMP $ SJMP $ END END指向内部指向内部指向内部指向内部RAMRAM20H20H单元单元单元单元指向外部指向外部指向外部指向外部RAMRAM2020H2020H单
6、元单元单元单元片机原理与应用技术重点程序高惠芳课件 例例例例3 377 把把把把01H01H单元内容送单元内容送单元内容送单元内容送02H02H单元,有几种不同的实现方法。单元,有几种不同的实现方法。单元,有几种不同的实现方法。单元,有几种不同的实现方法。 MOV 02H MOV 02H ,01H01H; 直接寻址直接寻址直接寻址直接寻址 3 3字节字节字节字节 2 2周期周期周期周期 MOV A MOV A ,01H01H ;直接寻址;直接寻址;直接寻址;直接寻址 + +寄存器寻址寄存器寻址寄存器寻址寄存器寻址 MOV 02H MOV 02H , A A ;4 4字节字节字节字节 2 2周期
7、周期周期周期 MOV A MOV A , R1R1 ; 寄存器寻址寄存器寻址寄存器寻址寄存器寻址 2 2字节字节字节字节 2 2周期周期周期周期 MOV R2 MOV R2 , A A MOV R0 MOV R0 ,#01H#01H; 4 4字节字节字节字节 3 3周期周期周期周期 MOV 02H MOV 02H ,R0R0; 间接寻址间接寻址间接寻址间接寻址 PUSH 01H PUSH 01H ; 栈操作栈操作栈操作栈操作 4 4字节字节字节字节 4 4周期周期周期周期 POP 02HPOP 02H 第三种方法占存储空间少,执行周期短第三种方法占存储空间少,执行周期短第三种方法占存储空间少,
8、执行周期短第三种方法占存储空间少,执行周期短。片机原理与应用技术重点程序高惠芳课件补充:补充:设20H,21H单元存放一个16位2进制数X1(高8位存于21H单元) ;30H,31H单元存放一个16位2进制数X2,(高8位存于31H单元);求X1+X2,结果存放于20H,21H。(两数之和不超过16位)片机原理与应用技术重点程序高惠芳课件答案ORG 0000HAJMP mainORG 0100HMAIN: MOV 20H,#12HMOV 21H,#34HMOV 30H,#23HMOV 31H,#45HMOV A,20HADD A,30HMOV 20H,AMOV A,21HADDC A,31HM
9、OV 21H,A SJMP $ END1234H+#2345H = #3579H片机原理与应用技术重点程序高惠芳课件例例4.3.1 将片内将片内RAM 30H单元中的两位单元中的两位压缩压缩BCD码转换成二进制数送到片内码转换成二进制数送到片内RAM 40H单元中单元中.(P63)片机原理与应用技术重点程序高惠芳课件ORG 1000HSTART:MOV A, 30H ; 取两位取两位BCD压缩码压缩码a1a0送送AANL A, #0F0H ; 取高取高4位位BCD码码a1SWAP A ; 高高4位与低位与低4位换位位换位MOV B, #0AH ; 将二进制数将二进制数10送入送入BMUL AB
10、 ; 将将10a1送入送入A中中MOV R0, A ; 结果送入结果送入R0中保存中保存MOV A, 30H ; 再取两位再取两位BCD压缩码压缩码a1a0送送AANL A, #0FH ; 取低取低4位位BCD码码a0ADD A, R0 ; 求和求和10a1+ a0MOV 40H, A ; 结果送入结果送入40H保存保存SJMP $ ; 程序执行完,程序执行完,“原地踏步原地踏步”END片机原理与应用技术重点程序高惠芳课件例例4.3.2 将内部将内部RAM中中20H单元的压缩单元的压缩BCD码拆开,转换成相应的码拆开,转换成相应的ASC码,存码,存入入21H、22H,高位存,高位存22H.(P
11、64)片机原理与应用技术重点程序高惠芳课件ORG 1000HSTART:MOV A,20H ; 取压缩取压缩BCD码码ANL A,#0FH ; 取低位取低位BCD码码 ADD A,#30H ; 转换为低位转换为低位ASCII码码MOV 21H,A ; 保存低位保存低位ASCII码码MOV A,20H ; 重新取压缩重新取压缩BCD码码ANL A,#0F0H ; 分离高位分离高位BCD码码SWAPA ; 得到高位得到高位BCD码码ADD A,#30H ; 转换为高位转换为高位ASCII码码MOV 22H,A ; 保存高位保存高位ASCII码码SJMP$END片机原理与应用技术重点程序高惠芳课件补
12、充举例:三字节无符号数相加,其中被补充举例:三字节无符号数相加,其中被加数在内部加数在内部RAM的的50H、51H和和52H单元单元中;加数在内部中;加数在内部RAM的的53H、54H和和55H单元中;要求把相加之和存放在单元中;要求把相加之和存放在50H、51H和和52H单元中进位存放在位寻址区的单元中进位存放在位寻址区的20H单单元最低位中(即元最低位中(即20H.0)。)。分析分析: 除最低字除最低字节可以使用可以使用ADD指令之外,其指令之外,其它字它字节相加相加时要把低字要把低字节的的进位考位考虑进去,因去,因此使用此使用ADDC指令指令.片机原理与应用技术重点程序高惠芳课件MOV
13、00H,C#20H片机原理与应用技术重点程序高惠芳课件分支程序是通分支程序是通过转移指令移指令实现的的一、一、单分支程序分支程序 使用条件使用条件转移指令移指令实现,即根据条件,即根据条件对程序的程序的执行行进行判断,行判断,满足条件足条件则进行程序行程序转移,否移,否则程序程序顺利利执行。行。可可实现单分支程序分支程序转移的指令有:移的指令有:JZ、JNZ、CJNE、DJNZ等等还有以位状有以位状态作作为条件条件进行程序分支的指令:行程序分支的指令:JC、JNC、JB、JNB和和JBC等等(1)单分支分支结构构举例例片机原理与应用技术重点程序高惠芳课件例例4.3.3 求符号函数的值。已知片内
14、求符号函数的值。已知片内RAM的的40H单元单元内有一自变量内有一自变量X,编制程序按如下条件求函数编制程序按如下条件求函数Y的值,的值,并将其存入片内并将其存入片内RAM的的41H单元中。见单元中。见P651 X00 X=0-1 X0Y =片机原理与应用技术重点程序高惠芳课件ORG 1000HSTART: MOV A, 40H; 将将X送入送入A中中 JZ COMP ; 若若A为为0,转至,转至COMP处处 JNB ACC.7, POST ; 若若A第第7位不为位不为1(X为正数),为正数), ;则程序转到则程序转到 POST处,处, ;否则(否则(X为负数)程序往下执行为负数)程序往下执行
15、 MOV A, #0FFH ; 将将 1(补码)送入(补码)送入A中中 SJMP COMP ; 程序转到程序转到COMP处处POST: MOV A, #01H ; 将将+1送入送入A中中COMP: MOV 41H, A ; 结果存入结果存入Y SJMP $ ; 程序执行完,程序执行完,“原地踏步原地踏步” END片机原理与应用技术重点程序高惠芳课件补充充举例:假定在外部例:假定在外部RAM中有中有ST1、ST2、ST3共共3个个连续单元,其中元,其中ST1和和ST2单元中分元中分别存放着两个存放着两个8位无符号二位无符号二进制数,制数,要求要求找出其中的大数并存入找出其中的大数并存入ST3单元
16、中。元中。MOV A,R2片机原理与应用技术重点程序高惠芳课件一、 单重循环程序例例4.3.5 已知片内已知片内RAM30H3FH单元中存放了单元中存放了16个二进个二进制无符号数,编制程序求他制无符号数,编制程序求他们的累加和,并将其和数存们的累加和,并将其和数存放在放在R4,R5中(中(R4存高存高8位,位,R5存低存低8位)。见位)。见P69片机原理与应用技术重点程序高惠芳课件ORG 1000HSTART: MOV R0, #30H MOV R2, #10H ; 设置循环次数(设置循环次数(16) MOV R4, #00H ; 和高位单元和高位单元R4清清0 MOV R5, #00H ;
17、 和低位单元和低位单元R5清清0LOOP: MOV A, R5 ; 和低和低8位的内容送位的内容送A ADD A, R0 ; 将将R0与与R5的内容相加的内容相加 MOV R5, A ; 低低8位的结果送位的结果送R5 CLR A ; A清清0 ADDC A, R4 ; 将将R4的内容和的内容和Cy相加相加 MOV R4, A ; 高高8位的结果送位的结果送R4 INC R0 ; 地址递增(加地址递增(加1) DJNZ R2, LOOP ; 若循环次数减若循环次数减1不为不为0,则转,则转 ;到到LOOP处循环处循环,否则,循环结束否则,循环结束 SJMP $ END片机原理与应用技术重点程序
18、高惠芳课件例例4.3.6 编制程序将片编制程序将片内内RAM的的30H4FH单元中的内容传送至单元中的内容传送至片外片外RAM的的2000H开开始的单元中。(见始的单元中。(见P70)片机原理与应用技术重点程序高惠芳课件程序如下:程序如下:ORG 1000HSTART: MOV R0, #30H MOV DPTR, #2000H MOV R2, #20H ; 设置循环次数设置循环次数LOOP: MOV A, R0 ; 将片内将片内RAM数据区内容送数据区内容送A MOVX DPTR, A ; 将将A的内容送片外的内容送片外 ;RAM数据区数据区 INC R0 ; 源地址递增源地址递增 INC
19、DPTR ; 目的地址递增目的地址递增 DJNZ R2, LOOP ; 若若R2的不为的不为0,则转到,则转到 ;LOOP处继续循环处继续循环,否则循环结束否则循环结束 SJMP $ END片机原理与应用技术重点程序高惠芳课件2、较长时间的定时程序、较长时间的定时程序较长时间的定时,通常采用多重循环的方法较长时间的定时,通常采用多重循环的方法1个机器周期个机器周期1个机器周期个机器周期2个机器周期个机器周期4个机器周期个机器周期最大定时时间计算公式为:最大定时时间计算公式为:(4256+2+1)2562s2s+2 s=525828(s)2个机器周期个机器周期1个机器周期个机器周期1个机器周期个
20、机器周期1个机器周期个机器周期片机原理与应用技术重点程序高惠芳课件第四章 单片机C语言程序设计 sbit位类型符用于定义在可位寻址字节或特殊功能寄存器位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时须指明其位地址,中的位,定义时须指明其位地址,可以是位直接地址,可可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。格式如下:位号。格式如下: sbit 位变量名位变量名=位地址;位地址;1、位地址为位直接地址,其取值范围为、位地址为位直接地址,其取值范围为0x000xff;2、位地址是可位寻址变量带位号或特殊功
21、能寄存器名带、位地址是可位寻址变量带位号或特殊功能寄存器名带位号,则在它前面须对可位寻址变量或特殊功能寄存器进位号,则在它前面须对可位寻址变量或特殊功能寄存器进行定义。行定义。Note:字节地址与位号之间、特殊功能寄存器与位号之间一:字节地址与位号之间、特殊功能寄存器与位号之间一般用般用“”作间隔。作间隔。片机原理与应用技术重点程序高惠芳课件第四章 单片机C语言程序设计【例例5-5】sbit型变量的定义。sbit OV=0xd2;sbit CY=0xd7;unsigned char bdata flag;sbit flag0=flag0;sfr P1=0x90;sbit P1_0=P10;sb
22、it P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;片机原理与应用技术重点程序高惠芳课件3 中断方式 单片机的中断为固定入口式中断,即一响应中断就转入固定入口地址执行中断服务程序。具体入口如下:编号 中断源 中断向量(汇编) C语言0 INT0 0003 interrupt 01T0 000BH interrupt 12INT1 0013H interrupt 23T1 001BH interrupt 34RI/TI 0023H interrupt 4 在
23、这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间只有8个单元。 片机原理与应用技术重点程序高惠芳课件 51系列单片机的5个中断源的中断服务入口地址之间相差8个单元。这8个存储单元用来存储中断服务程序一般来说是不够的。用户常在中断服务程序地址入口处放一条三字节的长转移指令。一般地,主程序从0030H单元以后开始存放。例如:ORG 0000HLJMP START ; 转入主程序,START为主程序地址标号ORG 0003HLJMP INT0 ; 转外中断中断服务程序ORG 000BHLJMP T0 ; 转定时器T0中断服务程序ORG 0030HSTART: ;
24、主程序开始片机原理与应用技术重点程序高惠芳课件n例6.1.2 在图6.1.6中,P1.0P1.3接有4个开关,P1.4P1.7接有4个发光二极管,消抖电路用于产生中断请求信号,当消抖电路的开关来回拨动一次将产生一个下跳变信号,向CPU申请中断。要求:初时发光二极管全黑,每中断一次,P1.0P1.3所接的开关状态反映到发光二极管上,且要求开关合上时对应发光二极管亮。片机原理与应用技术重点程序高惠芳课件片机原理与应用技术重点程序高惠芳课件n解:汇编程序如下:n ORG 0000Hn AJMP MAINn ORG 0003H ;外部中断0入口n AJMP SER_INT0 ;转中断服务程序n ORG
25、 0100H ;主程序n MAIN: MOV P1 , #0FH ;熄灭发光二极管且对开关输入端先输出1n SETB IT0 ;脉冲触发方式n SETB EX0 ;允许中断n SETB EA ;总中断允许n AJMP $ ;等待中断片机原理与应用技术重点程序高惠芳课件nSER_INT0: MOV P1 , #0FH ;熄灭发光二极管且对开关输入端先输出1n MOV A , P1 ;输入开关状态n CPL A ;状态取反n ANL A , #0FH ;屏蔽A的高半字节n SWAP A ;A高低半字节交换n MOV P1 , A ;开关状态输出n RETI ;中断返回每次单纯重置一次每次单纯重置一
26、次4个开关的开、合状态,个开关的开、合状态,4个发光二极个发光二极管维持原来的亮、灭状态,仅当来回拨动消抖开关后,产管维持原来的亮、灭状态,仅当来回拨动消抖开关后,产生了中断,发光二极管才反映新置的开关状态。生了中断,发光二极管才反映新置的开关状态。该例子的执行结果是:该例子的执行结果是:片机原理与应用技术重点程序高惠芳课件n#includenvoid int0() interrupt 0 /*中断函数中断函数*/nn P1=0x0f ; n/*熄灭发光二极管且对开关输入端先输出熄灭发光二极管且对开关输入端先输出1*/n P1=4; n /*读入开关状态,并左移四位,使开关反映在发光二极管上读
27、入开关状态,并左移四位,使开关反映在发光二极管上*/n P1 P1; /*对对P1口内容取反口内容取反*/nnmain() /*主函数主函数nn EA=1; /*开中断总开关开中断总开关*/n EX0=1; /*允许中断允许中断*/n IT0=1; /*负跳沿产生中断负跳沿产生中断*/n while(1) /*等待中断等待中断*/nC语言程序如下:语言程序如下:片机原理与应用技术重点程序高惠芳课件 补2: 通通过外部中断控制八盏灯循环点亮。解:解:通过P1口扩展八盏灯,在 INT1引脚(P3.3)接一个按钮开关到地,每按一下按钮就申请一次中断,点亮一盏灯,中断服务则是:依次点亮八盏灯中的一盏。
28、采用边沿触发。硬件电路如下图所示。片机原理与应用技术重点程序高惠芳课件程序如下:程序如下: C源程序见源程序见int1.c ORG 0000H LJMP MAIN ORG 0013H ; 中断服务程序入口地址 LJMP IN11 MAIN:SETB EA ; 开总中断允许“开关” SETB EX1 ; 开分中断允许“开关” CLR PX1 ; 低 优先级(也可不要此句) SETB IT1 ; 边沿触发 MOV A , #01H ; 给累加器A赋初值 SJMP $ ; 原地等待中断申请 IN11:RL A ; 左环移一次 MOV P1,A ; 输出到P1口 RETI ; 中断返回 END片机原理
29、与应用技术重点程序高惠芳课件3 定时器计数器的控制 与定时器计数器有关的控制寄存器有:1 1定时器控制寄存器TCOND7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0中断请求标志触发方式选择启动定时/计数器0 低电平1 下降沿0 停止1 启动片机原理与应用技术重点程序高惠芳课件2工作方式控制寄存器TMOD C1/T1控制C0/T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE门控位GATE=0 GATE=0 以运行控制位以运行控制位TRTR启动定时器启动定时器GATE=1 GATE=1 以外中断以外中断请求信
30、号(高电平)请求信号(高电平)启动定时器启动定时器C/T计数/定时选择M1 M0工作方式选择片机原理与应用技术重点程序高惠芳课件2). 方式1:16位方式 振荡器1/12TL0 TH0TF011&T0TR0GATEINT0C/T=0C/T=18位8位16位计数器片机原理与应用技术重点程序高惠芳课件3). 方式2:8位自动装入时间常数方式 TF0振荡器1/1211&T0TR0GATEINT0C/T=0C/T=1TL0 TH0片机原理与应用技术重点程序高惠芳课件定时/计数器常数的计算n1计数器初值的计算n把计数器计满为零所需要的计数值设定为C,计数初值设定为Tc,由此可得到公式:Tc=M-Cn式中
31、,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。片机原理与应用技术重点程序高惠芳课件n2定时器初值的计算n在定时器模式下,计数器由单片机主脉冲经12分频后计数。因此,定时器定时时间T的公式:T=(M-Tc)T计数计数 上式也可写成:Tc=M (T/ T计数计数)式中,M为模值,和定时器的工作方式有关;T计数是单片机振荡周期TCLK的12倍;Tc为定时器的定时初值。 片机原理与应用技术重点程序高惠芳课件 开中断(如果使用中断方式): 编程置位EA、ETi TRi位置位控制定时器的启动和停止。四、应用举例计算计数器的计数初值: 编
32、程时将计数初值送THi、 TLi; 可编程器件在使用前需要进行初始化:确定TMOD控制字:编程时将控制字送TMOD; 片机原理与应用技术重点程序高惠芳课件例1 设晶振频率fOSC=12MHz,使用定时器0以方式1产生周期为4ms的方波脉冲,并由P1.0 输出。以中断方式实现。8051P1.0P1.04000s1. 定时器/计数器作定时器使用片机原理与应用技术重点程序高惠芳课件 TMOD确定T1控制T0控制1000XXXXM0M1C/TGATEM0M1C/TGATE控制字01H 要产生4ms 的方波脉冲,只需在P1.0端以2ms为间隔,交替输出高低电平即可实现。为此,定时间应为2000s 。使用
33、12z晶振,则一个机器周期为1s,设待求计数初值为,则: 计算计数器的计数初值;片机原理与应用技术重点程序高惠芳课件(216X)1us=2000us 即216X=2000 X216-2000 0F830H所以,初值为: TH0=0F8H,TL0=30H 采用中断方式:编程时打开全局和局部中断。 由定时器控制寄存器TCON中的TR0位控制定时器的启动和停止。 TR01,启动; TR00,停止。 片机原理与应用技术重点程序高惠芳课件 ORG 0000H LJMP MAIN ;主程序入口 ORG 000BH LJMP T0INT ;T1中断入口汇编程序设计片机原理与应用技术重点程序高惠芳课件T0IN
34、T: MOV TH0,#0F8H ;重新设置初值 MOV TL0,#30H CPL P1.0 ;输出取反 RETI END ORG 0030HMAIN:MOV TMOD, #01H ;T0为方式1 MOV TH0, #0F8H MOV TL0,#30H ;初值 CLR P1.0 SETB EA ;允许中断 SETB ET0 SETB TR0 ;启动定时 SJMP $ ;等待中断主程序:中断处理程序:片机原理与应用技术重点程序高惠芳课件#include sbit P1_0=P10;void timer1(void) interrupt 1 using 1 P1_0=!P1_0; TH0= 0xF
35、8; TL0 = 0X30; void main(void) TMOD=0x01; P1_0=0; TH0= 0xF8; TL0 = 0X30; EA=1; ET0=1; TR0=1; while (1);C程序设计程序设计中断方式中断方式片机原理与应用技术重点程序高惠芳课件n(2)采用查询方式编程n汇编程序:n ORG 0000Hn LJMP MAINn ORG 0100HnMAIN: MOV TMOD ,#01H ;写入方式控制字n MOV TH0 , #0F8H ;写入计数初值n MOV TL0 , #30Hn SETB TR0 ;启动T0定时nLOOP: JBC TF0 ,NEXT ;
36、查询定时时间到否?n SJMP LOOPnNEXT: MOV TH0 , #0F8H ;重新写入计数初值n MOV TL0 , #30Hn CPL P1.0 ;输出取反n SJMP LOOP ;重复循环n END片机原理与应用技术重点程序高惠芳课件n(2)采用查询方式编程n汇编程序:n ORG 0000Hn LJMP MAINn ORG 0100HnMAIN: MOV TMOD ,#01H MOV TH0 , #0F8H n MOV TL0 , #30Hn SETB TR0 nLOOP: JBC TF0 ,NEXT n SJMP LOOPnNEXT: MOV TH0 , #0F8H n MOV
37、 TL0 , #30Hn CPL P1.0 n SJMP LOOP n ENDn(1)采用中断方式编程n汇编程序:n ORG 0000Hn LJMP MAIN n ORG 000BHn AJMP SER_T0 n ORG 0100HnMAIN: MOV TMOD , #01H n MOV TH0 , #0F8H n MOV TL0 , #30Hn SETB EA n SETB ET0 n SETB TR0 n SJMP $ nSERT0: MOV TH0 , #0F8H n MOV TL0 , #30Hn CPL P1.0 n RETIn END 片机原理与应用技术重点程序高惠芳课件#incl
38、ude sbit P1_0=P10;void main(void) TMOD=0x01; P1_0=0; TH0= 0xFF; TL0 = 0X83; TR0=1; while (1) if(TF0 =1) TF0 = 0;P1_0=!P1_0; TH0= 0xFF; TL0 = 0X83;C程序设计程序设计查询方式查询方式片机原理与应用技术重点程序高惠芳课件2. 定时器/计数器作长时间定时器使用n方法1:采用软件计数的方法实现,每次溢出后,用于计数的寄存器加1 n方法2:T1计数回0溢出时,使P1.1输出一个负脉冲,再把P1.1接到T0/P3.4引脚用以计数。 用定时器/计数器产生的定时时间
39、是有限的,如晶振为6MHz时,一个定时器最长的定时时间为T=216(1/6)12=131.072ms 片机原理与应用技术重点程序高惠芳课件例2. 采用6MHz晶振,使用定时器/计数器1在P1.0脚上输出周期为100ms,占空比为30%的矩形脉冲,以工作方式2编程实现。n解:对于6MHz晶振,使用工作方式2,最大定时时间为(28-0)(1/6)10-612=512s取500s定时,则周期100ms需要中断200次,占空比为30%,高电平需要60次中断。500s定时,初值为:256 (6/12)500=6片机原理与应用技术重点程序高惠芳课件图图6.2.7 中断服务程序流程图中断服务程序流程图片机原
40、理与应用技术重点程序高惠芳课件汇编程序:ORG 0000H LJMP MAIN ORG 001BH AJMP SER_T1 ORG 0100HMAIN: MOV TMOD , #20H ;写入方式控制字 MOV TH0 , #06H ;写入计数初值 MOV TL0 , #06H MOV R7 , #00H ;中断次数初值 SETB P1.0 SETB EA ;开总中断 SETB ET1 ;开T1中断 SETB TR1 ;启动T1 SJMP $ ;等待中断SER_T1: INC R7 ;中断次数加1 CJNE R7 , #60,LOOP1 CLR P1.0 ;中断次数到120次即高电平时间到输出
41、0 AJMP LOOPLOOP1: CJNE R7 , #200,LOOP SETB P1.0 ;中断次数到400次即周期到输出1 MOV R7 , #00HLOOP: RETI END 片机原理与应用技术重点程序高惠芳课件C语言程序:语言程序:#include #define uchar unsigned charuchar time=0;uchar period=200;uchar high=60;main () TMOD=0x20; TH0=0x06; TL0=0x06; EA=1; ET1=1; TR1=1; P1.0=1; while (1); timer1 () interrupt
42、 3 if (+time=high) P1.0=0; else if (time=period) time=0; P1.0=1; 片机原理与应用技术重点程序高惠芳课件1)SCON - 可位寻址的串行口控制寄存器,用以可位寻址的串行口控制寄存器,用以设定串行口的工作方式、接收设定串行口的工作方式、接收/发送控制以及设置发送控制以及设置状态标志:状态标志: 2 2 80C51串行口寄存器串行口寄存器 SM0和和SM1为工作方式选择位,可选择四种工作方式:为工作方式选择位,可选择四种工作方式: 片机原理与应用技术重点程序高惠芳课件SM2:多机通信控制位。:多机通信控制位。 REN:允许接收控制位。当
43、:允许接收控制位。当REN=1,则允许接,则允许接收,当收,当REN=0,则禁止接收。,则禁止接收。TB8:发送数据的第:发送数据的第9位。位。 RB8:接收数据的第:接收数据的第9位。位。 TI:发送中断标志位。:发送中断标志位。 RI:接收中断标志位。:接收中断标志位。 片机原理与应用技术重点程序高惠芳课件*SM2,多机通信控制位,多机通信控制位,主要用于方式,主要用于方式2和方式和方式3。当当接收机的接收机的SM2=1时可以利用收到的时可以利用收到的RB8来控制是否来控制是否激活激活RI(RB80时不激活时不激活RI,收到的信息丢弃;,收到的信息丢弃;RB81时收到的数据进入时收到的数据
44、进入SBUF,并激活,并激活RI,进而在中断,进而在中断服务中将数据从服务中将数据从SBUF读走)。读走)。当当SM2=0时,不论收时,不论收到的到的RB8为为0和和1,均可以使收到的数据进入,均可以使收到的数据进入SBUF,并激活并激活RI(即此时(即此时RB8不具有控制不具有控制RI激活的功能)。激活的功能)。通过控制通过控制SM2,可以实现多机通信。,可以实现多机通信。在方式在方式0时,时,SM2必须是必须是0。在方式。在方式1时,若时,若SM2=1,则只有接收到有效停止位时,则只有接收到有效停止位时,RI才置才置1。REN,允许串行接收位,允许串行接收位。由软件置。由软件置REN=1,
45、则启动,则启动串行口接收数据;若软件置串行口接收数据;若软件置REN=0,则禁止接收。,则禁止接收。片机原理与应用技术重点程序高惠芳课件TI,发送中断标志位,发送中断标志位。在方式。在方式0时,当串行发送第时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位位数据结束时,或在其它方式,串行发送停止位的开始时,的开始时,由内部硬件使由内部硬件使TI置置1,向,向CPU发中断申发中断申请。在中断服务程序中,必须用请。在中断服务程序中,必须用软件将其清软件将其清0,取,取消此中断申请。消此中断申请。RI,接收中断标志位,接收中断标志位。在方式。在方式0时,当串行接收第时,当串行接收第8位数据
46、结束时,或在其它方式,串行接收停止位位数据结束时,或在其它方式,串行接收停止位的中间时,的中间时,由内部硬件使由内部硬件使RI置置1,向,向CPU发中断申发中断申请。也必须在中断服务程序中,用请。也必须在中断服务程序中,用软件将其清软件将其清0,取消此中断申请。取消此中断申请。片机原理与应用技术重点程序高惠芳课件2) PCON电源控制寄存器电源控制寄存器 : SMOD(PCON.7) 波特率倍增位。在串行口方式波特率倍增位。在串行口方式1、方、方式式2、方式、方式3时,波特率与时,波特率与SMOD有关,当有关,当SMOD=1时,波时,波特率提高一倍。复位时,特率提高一倍。复位时,SMOD=0。
47、3) IE中断允许控制寄存器中断允许控制寄存器 :EA-中断允许总控制位;中断允许总控制位;ES-串行中断允许控制位串行中断允许控制位 4) IP中断优先级控制寄存器中断优先级控制寄存器 :PS-串行中断优先级设定位串行中断优先级设定位 片机原理与应用技术重点程序高惠芳课件 6.3.3 6.3.3 80C51串行口的工作方式串行口的工作方式 一、方式一、方式0 方式方式0时,串行口为同步移位寄存器的输入输出方时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由)引脚输入或输出,同步
48、移位脉冲由TXD(P3.1)引脚输出。发送和接收均为)引脚输出。发送和接收均为8位数据,位数据,低位在先,高位在后低位在先,高位在后。波特率固定为。波特率固定为fosc/12。 片机原理与应用技术重点程序高惠芳课件 1、方式、方式0发送过程:发送过程: 在在TI=0时,当时,当CPU执行一条向执行一条向SBUF写数据的指令写数据的指令时,如时,如MOV SBUF,A;就启动发送过程。经过一个机;就启动发送过程。经过一个机器周期,写入发送数据寄存器中的数据按器周期,写入发送数据寄存器中的数据按低位在低位在前,高位在后前,高位在后从从RXD依次发送出去,同步时钟从依次发送出去,同步时钟从TXD送出
49、。送出。8位数据(一帧)发送完毕后,由硬件位数据(一帧)发送完毕后,由硬件使发送中断标志使发送中断标志TI置位,向置位,向CPU申请中断。申请中断。 片机原理与应用技术重点程序高惠芳课件 2、方式、方式0接收过程接收过程 在在RI=0的条件下,将的条件下,将REN(SCON.4)置)置“1”就启动就启动一次接收过程。串行数据通过一次接收过程。串行数据通过RXD接收,同步移位脉冲通接收,同步移位脉冲通过过TXD输出。在移位脉冲的控制下,输出。在移位脉冲的控制下,RXD上的串行数据依上的串行数据依次移入移位寄存器。当次移入移位寄存器。当8位数据(一帧)全部移入移位寄位数据(一帧)全部移入移位寄存器
50、后,接收控制器发出存器后,接收控制器发出“装载装载SBUF”信号,将信号,将8位数据位数据并行送入接收数据缓冲器并行送入接收数据缓冲器SBUF中,同时,由硬件使接收中,同时,由硬件使接收中断标志中断标志RI置位,向置位,向CPU申请中断。申请中断。 片机原理与应用技术重点程序高惠芳课件常用于串行通讯。除发常用于串行通讯。除发/ /收收8 8位数据外,还位数据外,还 在在D0D0位前有一个起始位位前有一个起始位“0 0”; 在在D7D7位后有一个停止位位后有一个停止位“1 1”。方式方式1 1工作时:工作时: 发送端自动添加一个起始位和一个停止位;发送端自动添加一个起始位和一个停止位; 接收端自
51、动去掉一个起始位和一个停止位。接收端自动去掉一个起始位和一个停止位。二、方式二、方式1 18 8位位UART(1+8+1UART(1+8+1位位) )波特率可变波特率可变 波特率可变波特率可变 用定时器用定时器T1T1作波特率发生器作波特率发生器: 公式:波特率公式:波特率 = =(2 2SMODSMOD/32/32) T1T1的溢出率的溢出率片机原理与应用技术重点程序高惠芳课件波特率波特率=(2=(2SMODSMOD/32)/32) T1T1的溢出率的溢出率 (P172P172) 溢出率:溢出率:T1T1溢出的频繁程度溢出的频繁程度 即:即:T1T1溢出一次所需时间的倒数。溢出一次所需时间的
52、倒数。T1T1溢出时间(溢出时间(256256X X)(12/fosc)(12/fosc) 初值初值 X = X = 2 2n n - - 2 2SMOD SMOD fosc fosc 32 32 波特率波特率 1212 波特率波特率 = =2 2SMOD SMOD fosc fosc32 32 12(256 12(256 - X)- X)其中:其中:X X 是定时器初值是定时器初值片机原理与应用技术重点程序高惠芳课件 例例 用用T1T1工作于工作于方式方式2 2来产生波特率来产生波特率12001200, 已知晶振频率已知晶振频率=6MHz=6MHz。要求出。要求出T1T1的初值:的初值:初值
53、初值 X = X = 2 28 8 - - 2 20 0 6 6 10106 632 32 1200 1200 1212= 256 = 256 - - = 256 = 256 - - 13.02 13.026 6 10106 6460800460800 243 = 0F3H 243 = 0F3H 片机原理与应用技术重点程序高惠芳课件2. 总线的构造总线的构造n1。以。以P0口的口的8位口线作位口线作低低8位地址位地址/数据线。数据线。n2。以。以P2口的口线作口的口线作高位地址线高位地址线n3。控制信号。控制信号.使用使用ALE作地址锁存的选通信号,以实现低作地址锁存的选通信号,以实现低8位地
54、址的锁存;位地址的锁存;.以以PSEN信号作扩展程序存储器的读选通信号信号作扩展程序存储器的读选通信号;.以以EA信号作为内外程序存储器的选择信号;信号作为内外程序存储器的选择信号;.以以RD和和WR作为扩展数据存储器和作为扩展数据存储器和I/O端口的读选通信号。端口的读选通信号。片机原理与应用技术重点程序高惠芳课件扩展总线构造图片机原理与应用技术重点程序高惠芳课件两种命令两种命令工作方式命令工作方式命令C口位置位口位置位/复位命令复位命令1、工作方式命令、工作方式命令用于确定各数据口的用于确定各数据口的工作方式及数据工作方式及数据传送送方向方向48255初始化初始化片机原理与应用技术重点程序
55、高惠芳课件 A口有三种工作方式口有三种工作方式B口只有两种工作方式口只有两种工作方式 在方式在方式1或方式或方式2下,下,对C口的定口的定义不影响作不影响作为联络线使用的使用的C口各位功能口各位功能 最高位(最高位()是)是标志位,志位,其状其状态固定固定为“1”,用于,用于表明本字表明本字节是工作方式是工作方式命令命令片机原理与应用技术重点程序高惠芳课件例例7.3.1 按照图按照图7.3.4中中8255与与AT89C52的连接图对的连接图对8255初始化编程。初始化编程。 A、B、C口均为基本口均为基本I/O输出方式。输出方式。 A口与上口与上C口为基本口为基本I/O输出方式,输出方式,B口
56、与下口与下C口为基口为基本本I/O输入方式。输入方式。 A口为应答口为应答I/O输入方式,输入方式,B口为应答口为应答I/O输出方式。输出方式。3、初始化、初始化编程程8255A初始化的内容就是向控制字寄存器写入工作方式命初始化的内容就是向控制字寄存器写入工作方式命令和令和C口位置位口位置位/复位命令。工作方式字应输入控制寄存器,复位命令。工作方式字应输入控制寄存器,按上面的连接方式,控制寄存器的地址为按上面的连接方式,控制寄存器的地址为E003H。片机原理与应用技术重点程序高惠芳课件 A、B、C口均为基本口均为基本I/O输出方式输出方式解:解:8255的初始化程序为:的初始化程序为:(1)#
57、include#include#define COM8255 XBYTE0xe003/ 定义定义8255控制寄存器地址控制寄存器地址 #define uchar unsigned charvoid init8255(void) COM8255=0x80; /*工作方工作方式选择字送入式选择字送入8255控制寄存控制寄存器器,设置设置A、B、C口均为基本口均为基本I/O输出方式输出方式 */片机原理与应用技术重点程序高惠芳课件 A口与上口与上C口为基本口为基本I/O输出方式,输出方式,B口口与下与下C口为基本口为基本I/O输入方式。输入方式。#include#define COM8255 0xe
58、003 /*定定义义8255控制寄存器地址控制寄存器地址 */void init8255(void) XBYTE COM8255=0x83; /*工工作方式选择字送入作方式选择字送入8255控制寄存器控制寄存器,设置设置A、C口为口为基本基本I/O输出方式,输出方式,B、C口为基本口为基本I/O输入方式输入方式*/片机原理与应用技术重点程序高惠芳课件 A口为应答口为应答I/O输入方式,输入方式,B口为应答口为应答I/O输出方式。输出方式。uchar xdata COM8255 _at_ 0xe003; /*定义定义8255控制寄存控制寄存器地址器地址*/void init8255(void)
59、COM8255=0xb4; /*工作方式工作方式选择字送入选择字送入8255控制寄存控制寄存器,设置器,设置A、B、C口为基本口为基本I/O输出输出方式方式 */片机原理与应用技术重点程序高惠芳课件五五DAC0832的应用的应用 D/A转换器在实际中经常作为波形发生器使用,通过它转换器在实际中经常作为波形发生器使用,通过它可以产生各种各样的波形。它的基本原理如下:利用可以产生各种各样的波形。它的基本原理如下:利用D/A转换器输出模拟量与输入数字量成正比这一特点,通过程转换器输出模拟量与输入数字量成正比这一特点,通过程序控制序控制CPU向向D/A转换器送出随时间呈一定规律变化的数转换器送出随时间
60、呈一定规律变化的数字,则字,则D/A转换器输出端就可以输出随时间按一定规律变转换器输出端就可以输出随时间按一定规律变化的波形。化的波形。00H0FFHA=00A=0FFHA=00A=0FFH片机原理与应用技术重点程序高惠芳课件直通方式举例直通方式举例程序实例程序实例1:输出正锯齿波:输出正锯齿波Main()()While(1)P1+;/这里假设这里假设P1口接数据输入口接数据输入片机原理与应用技术重点程序高惠芳课件程序实例程序实例2:输出负锯齿波:输出负锯齿波Main()() While(1) P1-; /这里假设这里假设P1口接数据输入口接数据输入片机原理与应用技术重点程序高惠芳课件程序实例
61、程序实例3:输出三角波:输出三角波Main()() P1=0; While(1) While(1) If(P1!=0xFF) P1+;/这里假设这里假设P1口接数据输入口接数据输入 Else Break; While(1) If(P1!=0x00) P1-; /这里假设这里假设P1口接数据输入口接数据输入 Else Break; 片机原理与应用技术重点程序高惠芳课件第八章第八章 MCS-51MCS-51与与D/AD/A、A/DA/D的接口的接口ADC0809的工作流程如图所示:的工作流程如图所示:1输入输入3位地址,并使位地址,并使ALE=1,将地址存入地址锁存器中,经地址译,将地址存入地址锁
62、存器中,经地址译码器译码从码器译码从8路模拟通道中选通一路模拟量送到比较器。路模拟通道中选通一路模拟量送到比较器。2送送START一高脉冲,一高脉冲,START的的上升沿上升沿使逐次逼近寄存器复位,使逐次逼近寄存器复位,下下降沿降沿启动启动A/D转换,并使转换,并使EOC信号为低电平。信号为低电平。3当转换结束时,转换的结果送入到输出三态锁存器,并使当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号信号回到高电平,通知回到高电平,通知CPU已转换结束。已转换结束。4CPU使使OE为高电平,从输出端为高电平,从输出端D0D7读入数据。读入数据。三三ADC0809的工作流程的工作流程片机
63、原理与应用技术重点程序高惠芳课件第八章第八章 MCS-51MCS-51与与D/AD/A、A/DA/D的接口的接口2. ADC0809的接口的接口(模拟时序方式模拟时序方式)和编程和编程#define ALEP2_4#define STARTP2_5#define OEP2_6#define EOCP2_7#include #include 片机原理与应用技术重点程序高惠芳课件第八章第八章 MCS-51MCS-51与与D/AD/A、A/DA/D的接口的接口unsigned char adc_0809(unsigned char chanel)/地址信息放在地址信息放在chanel变量中变量中un
64、signed char dd; /临时变量临时变量P2&=0Xf8;P2|=chanel;/P2低三位输出地址低三位输出地址ALE=1;/锁存地址锁存地址START=1;/复位逐次逼近寄存器复位逐次逼近寄存器ALE=0;START=0;/开始转换开始转换_nop_();_nop_();/延时延时while(EOC=0);/等待转换结束,转换时间等待转换结束,转换时间100usOE=1;/输出使能输出使能dd=P1;/数据暂存数据暂存OE=0;Return(dd);/返回转换值返回转换值片机原理与应用技术重点程序高惠芳课件8031WRP2.7P0DI7DI0CSXFERWR1WR2DAC0832
65、IOUT2IOUT1+-RFRDAC0832单缓冲方式接口电路ILE+5V【补充举例补充举例1】 利用单缓冲方式利用单缓冲方式(总线方式总线方式),编程从,编程从DAC0832输出端分别产生锯齿波、三角波和方波。输出端分别产生锯齿波、三角波和方波。 分析:根据单缓冲方式图的连接,DAC0832的口地址为7FFFH。片机原理与应用技术重点程序高惠芳课件汇编语言编程:锯齿波锯齿波 MOV DPTR,#7FFFH CLR ALOOP:MOVX DPTR,A INC A SJMP LOOP三角波:三角波: MOV DPTR,#7FFFH CLR ALOOP1:MOVX DPTR,A INC A CJN
66、E A,#0FFH,LOOP1LOOP2:MOVX DPTR,A DEC A JNZ LOOP2 SJMP LOOP1片机原理与应用技术重点程序高惠芳课件方波:方波: MOV DPTR,#7FFFHLOOP:MOV A,#00H MOVX DPTR,A ACALL DELAY MOV A,#FFH MOVX DPTR,A ACALL DELAY SJMP LOOPDELAY:MOV R7,#0FFH DJNZ R7,$ RET片机原理与应用技术重点程序高惠芳课件C语言编程:锯齿波:#include /定义绝对地址访问#define uchar unsigned char#define DAC0
67、832 XBYTE0x7FFFvoid main()uchar i;while(1)for (i=0;i0xff;i+)DAC0832=i;片机原理与应用技术重点程序高惠芳课件三角波:#include /定义绝对地址访问#define uchar unsigned char#define DAC0832 XBYTE0x7FFFvoid main()uchar i;while(1)for (i=0;i0;i-)DAC0832=i;片机原理与应用技术重点程序高惠芳课件方波:方波:#include /定义绝对地址访问定义绝对地址访问#define uchar unsigned char#define
68、 DAC0832 XBYTE0x7FFFvoid delay(void);void main()uchar i;while(1)DAC0832=0; /输出低电平输出低电平delay(); /延时延时DAC0832=0xff; /输出高电平输出高电平delay(); /延时延时void delay() /延时函数延时函数uchar i;for (i=0;i0xff;i+) ;片机原理与应用技术重点程序高惠芳课件四四ADC0809与与MCS-51单片机的接口(总线方式)单片机的接口(总线方式)下图是一个ADC0809与8051的一个接口电路图。1硬件连接硬件连接P0.0P0.1P0.2P0.3P
69、0.4P0.5P0.6P0.7ALE WR P2.7RDINTO+5VGNDD0D1D2D3D4D5D6D7ADDAADDBADDCCLKALESTARTOEEOCIN0IN1IN2IN3IN4IN5IN6IN7 VREF+VREF-ADC08098051分频器片机原理与应用技术重点程序高惠芳课件2软件编程软件编程例题例题1:设接口电路用于一个:设接口电路用于一个8路模拟量输入的巡回检路模拟量输入的巡回检测系统,使用测系统,使用中断方式中断方式采样数据,把采样转换所得的采样数据,把采样转换所得的数字量按序存于片内数字量按序存于片内RAM的的30H37H单元中。采样单元中。采样完一遍后停止采集。
70、完一遍后停止采集。ADC0809的编程涉及3个步骤:1、8路模拟通道选择2、ADC的启动3、转换完成后转换数据的传送分析:1、8通道的地址分别为:0x00000x00072、对8个地址写操作MOVX DPTR,A3、读入转换完的数据 MOVX A,DPTR片机原理与应用技术重点程序高惠芳课件ORG 0000HAJMP MAINORG 0003HLJMP INT0ORG 0100H ;主程序;主程序MAIN: MOV R0,#30H ;设立数据存储区指针;设立数据存储区指针MOV R2,#08H ;设置;设置8路采样计数值路采样计数值SETB IT0 ;设置外部中断;设置外部中断0为边沿触发方式
71、为边沿触发方式 (下降沿下降沿)SETB EA ;CPU开放中断开放中断SETB EX0 ;允许外部中断;允许外部中断0中断中断MOV DPTR,#0000H ;送入口地址并指向;送入口地址并指向IN0LOOP: MOVX DPTR,A ;启动;启动A/D转换,转换,A的值无意义的值无意义HERE: SJMP HERE ;等待中断;等待中断ORG 0200H ;中断服务程序;中断服务程序INT0: MOVX A,DPTR ;读取转换后的数字量;读取转换后的数字量MOV R0,A ;存入片内;存入片内RAM单元单元INC DPTR ;指向下一模拟通道;指向下一模拟通道INC R0 ;指向下一个数
72、据存储单元;指向下一个数据存储单元DJNZ R2,NEXT ;8路未转换完,则继续路未转换完,则继续CLR EA ;已转换完,则关中断;已转换完,则关中断CLR EX0 ;禁止外部中断;禁止外部中断0中断中断RETI ;中断返回;中断返回NEXT: MOVX DPTR,A ;再次启动;再次启动A/D转换转换RETI ;中断返回;中断返回片机原理与应用技术重点程序高惠芳课件C语言编程:#include #include /定义绝对地址访问#define uchar unsigned char#define IN0 XBYTE0x0000 /定义IN0为通道0的地址static uchar dat
73、a x8; /定义8个单元的数组,存放结果uchar xdata *ad_adr; /定义指向通道的指针uchar i ;void main(void)IT0=1; /初始化EX0=1;EA=1;i=0;ad_adr=&IN0; /指针指向通道0*ad_adr=i; /启动通道启动通道0转换转换.i值无意义值无意义 等价于等价于movx dptr,aWhile(1); /等待中断片机原理与应用技术重点程序高惠芳课件void int_adc(void) interrupt 0 /中断函数xi=*ad_adr; /接收当前通道转换结果i+;ad_adr+; /指向下一个通道if (i8) *ad_adr=i; /8个通道未转换完,启动下一个通道返回elseEA=0;EX0=0; /8个通道转换完,关中断返回片机原理与应用技术重点程序高惠芳课件