dac1220输出电压c语言程序,单片机c语言编程.pptx

51单片机硬件结构C51基础知识及其基本程序设计C51函数、数组、指针定义及应用单片机内部资源及其C语言编程单片机资源扩展及其C语言编程综合程序设计考试; 四 C51编程设计

4.1 MCS-51内部资源使用的C语言编程4.2 MCS-51片外扩展的C语言编程4.3 频率量测量的C语言编程;4.1 MCS-51内部资源使用的C语言编程;表4.1 MCS-51中断源编号; using n 选项用于实现工作寄存器组的切换,n是中断服务子程序中选用的工作寄存器组号(0 ~ 3)。在许多情况下,响应中断时需保护有关现场???息,以便中断返回后,能使中断前的源程序从断点处继续正确地执行下去。这在MCS-51单片机中,能很方便地利用工作寄存器组的切换来实现。即在进入中断服务程序前的程序中使用一组工作寄存器,进入中断服务程序后,由"using n"切换到另一组寄存器,中断返回后又恢复到原寄存器组。这样互相切换的两组寄存器中的内容彼此都没有被破坏。;图 4.1 扩展多个中断源; 在中断服务程序中仅设置标志,并保存I/O口输入状态。Franklin C51编译器提供定义特定MCS-51系列成员的寄存器头文件。MCS-51头文件为reg51.h。C51程序如下:;for(; ;) { if(flag) /* 有中断 */ { switch(status) /* 根据中断源分支 */ { case 0 : break ; /* 处理IN0 */ case 1 : break ; /* 处理IN1 */ case 2 : break; /* 处理IN2 */ case 3 : break; /* 处理IN3 */ default : ; } flag=0 ; /* 处理完成清标志 */ } } };4.1.2 定时器/计数器(T/C)应用的C语言编程;(1) 用定时器0的方式1编程,采用查询方式,程序如下: # include sbit P1_0=P1^0 ; void main(void) { TMOD=0x01 ; /* 设置定时器1为非门控制方式1*/ TR0=1 ; /* 启动 T/C0 */ for( ; ;) { TH0= -(1000/256) ; /* 装载计数器初值 */ TL0= -(1000%256) ; do { } while (!TF0) ; /* 查询等待TF0置位 */ P1_0=!P1_0; /* 定时时间到P1.0反相 */ TF0=0; /* 软件清 TF0 */ } };(2) 用定时器0的方式1编程,采用中断方式。程序如下: # include sbit P1_0=P1^0 ; void time (void) interrupt 1 using 1 /* T/C0中断服务程序入口 */ { P1_0=!P1_0 ; /* P1.0取反 */ TH0= -(1000/256); / * 重新装载计数初值 */ }void main( void ) { TMOD=0x01 ; /* T/C0工作在定时器非门控制方式1 */ P1_0=0; TH0= -(1000/256 ); /* 预置计数初值 */ TL0= -(1000%256) ; EA=1 ; /* CPU中断开放 */ ET0= 1 ; /* T/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值