欢迎来到天天文库
浏览记录
ID:37831607
大小:795.72 KB
页数:9页
时间:2019-06-01
《单片机中断及串口通信学习笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、中断52单片机中断级别中断源默认中断级别序号(C语言用)入口地址(汇编语言用)INT0-外部中断0最高00003HT0-定时器/计数器0中断第21000BHINT1-外部中断1第320013HT1-定时器/计数器1中断第43001BHTI/RI-串行口中断第540023HT2-定时器/计数器2中断最低5002BH中断产生条件:INT0:由P3^2端口线引入,低电平或下降沿引起。INT1:由P3^3端口线引入,低电平或下降沿引起。T0:由T0计数器计满回零引起。T1:由T1计数器计满回零引起。T2:由T2计数器计满回零
2、引起。TI/RI:串行口发送完成一帧字符发送/接收后引起。与中断相关的寄存器的介绍中断允许寄存器IE位序号D7D6D5D4D3D2D1D0位符号EA--ET2ESET1EX1ET0EX0位地址AFH--ADHACHABHAAHA9HA8H全局中断无效位T2中断串口中断T1中断INT1中断T0中断INT0中断位功能允许位允许位允许位允许位允许位允许位允许位位值为’1’表示打开该中断,位值为’0’表示关闭该中断。中断优先级寄存器IP位序号D7D6D5D4D3D2D1D0位符号------PSPT1PX1PT0PX0位地址
3、------BCHBBHBAHB9HB8H无效位无效位无效位串口中断T1中断INT1中断T0中断INT0中断位功能优先级控优先级优先级控优先级优先级控制位位制位控制位制位位值为’1’表示定义该中断位高优先级中断,位值为’0’表示定义该中断为低优先级中断。定时器/计数器工作方式寄存器TMOD位序号D7D6D5D4D3D2D1D0位符号GATEC/?̅M1M0GATEC/?̅M1M0门控制模式选工作方式选择位门控制模式选工作方式选择位位功能位择位位择位
4、<----------------定时器1-------------
5、---->
6、<----------------定时器0--------------->
7、GATE=0,定时器/计数器启动与停止仅受TCON中TRX(X=0,1)来控制。GATE=1,定时器/计数器启动与停止由TCON中的TRX(X=0,1)和INTX(X=0,1)上的电平状态来共同控制。C/?̅=0,为定时器模式;C/?̅=1,为计数器模式。M1M0-工作方式选择位M1M0工作方式00方式0,为13位定时器/计数器01方式1,为16位定时器/计数器10方式2,8位初值自动重装的8位定时器/计数器11方式3,仅适用于T
8、0,分成两个8位计数器,T1停止计数定时器/计数器控制寄存器TCON位序号D7D6D5D4D3D2D1D0位符号TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88HT1溢出T1运行T0溢出T0运行INT1请INT1触INT0请INT0触位功能标志位控制位标志位控制位求标志发方式求标志发方式选择位选择位TFX:定时器计X满溢出时,由硬件使TFX置1,并且申请中断。进入中断服务程序后,有硬件自动清零。TRX:由软件清零关闭定时器X。当GATE=1,INTX=1时,TRX置
9、1启动定时器X;当GATE=0时,TRX置1启动定时器X。IEX:INTX请求标志。当ITX=0时,INTX为电平触发方式,每个机器周期的S5P2采样INTX,若INTX脚为低电平,则将IEX置1,否则IEX清零;当ITX=1时,INTX为跳变沿触发方式,当第一个机器周期采样到INTX为低电平时,则将IEX置1。IEX=1,表示INTX正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,该位由硬件清零。ITX:INTX触发方式选择位。ITX=0,INTX为电平触发方式,引脚INTX上低电平有效。ITX=1,I
10、NTX为跳变沿触发方式,引脚INTX上的电平从高跳到低的负跳变有效。定时器的初始化①对TMOD赋值,以确定T0和T1的工作方式。②计算初值,并将初值写入TH0、TL0或TH1、TL1。③中断方式时,对IE赋值,开放中断。④使TR0或TR1置位,启动定时器/计数器定时或计数。voidinit_T0_time(){TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//装初值12MHZ晶振定时50ms数位50000TL0=(65536-50000)%256;EA=1;//开总中断E
11、T0=1;//开定时器0中断TR0=1;//启动定时器0}中断函数voidT0_time(){TH0=(65536-50000)/256;//重装初值TL0=(65536-50000)%256;num++;if(num==20)//每隔1秒将num重置为0{num=0;led1=~led1;//控制led1闪烁}}voidmain(){init
此文档下载收益归作者所有