社区
C语言
帖子详情
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
Proteas
2006-06-09 06:46:26
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
...全文
271
11
打赏
收藏
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
用TC编译对端口操作的程序,编译通过,连接不了,怎么回事啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Proteas
2006-06-13
打赏
举报
回复
恩,明白了,谢谢楼上。不过不是用tc做工程开发,做实验。
Proteas
2006-06-12
打赏
举报
回复
自己顶,有工程经验的给指点下了。谢谢。
柯本
2006-06-12
打赏
举报
回复
两个问题
1.TC没有inb和outb函数,应该改为inportb和outportb
2.你定义并调用了SetPc0()函数,可没有写出它的实现
----------------------------------------------------
已经有十多年没用TC了,居然还有人用
Proteas
2006-06-12
打赏
举报
回复
继续顶,继续顶
flc
2006-06-12
打赏
举报
回复
关注
Proteas
2006-06-11
打赏
举报
回复
没有,在纯dos,实模式,已经用汇编又写了一遍,但是还不知道问题出在哪里。
bombwang
2006-06-10
打赏
举报
回复
mark
dengjun0256
2006-06-10
打赏
举报
回复
你一定是在windowsXX下运行TC的
Proteas
2006-06-10
打赏
举报
回复
还是不可以,真郁闷了。不知道问题出在什么地方。
beforewind
2006-06-09
打赏
举报
回复
放到main()函数前面试试
不行再 减少main中的循环层数试试
/*函数声明*/
void init_8253(void);
void init_8255(void);
unsigned char Read_8255B(void);
void DeLay(void);
void SetPc0(void);
int TestSwitch(void);
void play(unsigned char low,unsigned char high);
/*定义音符频率表*/
unsigned char Map_Music[8][2]={{17,38},{01,34},{30,30},{02,27},{9,24},{46,21},{12,19},{3,17}};
Proteas
2006-06-09
打赏
举报
回复
程序如下:
/*演奏音乐小程序*/
/*2006,6,9*/
/*---------------------------------------------*/
/*---------------------------------------------*/
#include<stdio.h>
#include<dos.h>
#include<conio.h>
/*定义常用断口地址*/
#define CNT_0 0x40 /*8253计数器0地址*/
#define CTRL_8253 0x43 /*8253控制口地址*/
#define CTRL_8255 0xff2b /*8255控制口地址*/
#define PORT_B 0xff29 /*8255B口地址*/
#define PORT_C 0xff2a /*8255C口地址*/
#define STATE_8253 0x36 /*8253控制字*/
#define STATE_8255 0x82 /*8255控制字*/
#define STATE_8255C 0x36 /*8255C口控制字*/
/*---------------------------------------------*/
/*主程序*/
int main(void)
{
/*函数声明*/
void init_8253(void);
void init_8255(void);
unsigned char Read_8255B(void);
void DeLay(void);
void SetPc0(void);
int TestSwitch(void);
void play(unsigned char low,unsigned char high);
/*定义音符频率表*/
unsigned char Map_Music[8][2]={{17,38},{01,34},{30,30},{02,27},{9,24},{46,21},{12,19},{3,17}};
/*--------------------------*/
/*初始化所用芯片,并写入控制字*/
init_8253();
init_8255();
if(!TestSwitch())/*消除抖动*/
return 1;
else
{
do
{
unsigned char temp=Read_8255B();
switch(temp)/*扫描按键*/
{
case 0 :SetPc0();break;/*置0*/
case 1 :play(Map_Music[0][0],Map_Music[0][1]);break;
case 2 :play(Map_Music[1][0],Map_Music[1][1]);break;
case 3 :play(Map_Music[2][0],Map_Music[2][1]);break;
case 4 :play(Map_Music[3][0],Map_Music[3][1]);break;
case 5 :play(Map_Music[4][0],Map_Music[4][1]);break;
case 6 :play(Map_Music[5][0],Map_Music[5][1]);break;
case 7 :play(Map_Music[6][0],Map_Music[6][1]);break;
case 8 :play(Map_Music[7][0],Map_Music[7][1]);break;
default: /*printf("Input Error!!");*/break;
}
}while('q'==getchar()||'Q'==getchar())/*结束循环*/;
return 0;
}
}
/*-----------------------------------*/
/*延时函数*/
void DeLay(void)
{
int count;
for(count=0;count<100;count++);
}
/*------------------------------------*/
/*初始化8255的函数*/
void init_8255(void)
{
outb(CTRL_8255,STATE_8255);
}
/*------------------------------*/
/*初始化8253的函数*/
void init_8253(void)
{
outb(CTRL_8253,STATE_8253);
}
/*------------------------------*/
/*读8255B口函数*/
unsigned char Read_8255B(void)
{
unsigned char Read;
Read=inb(PORT_B);
return Read;
}
/*-------------------------------*/
/*消除抖动函数*/
int TestSwitch(void)
{
unsigned char pre,now;
pre=Read_8255B();
DeLay();
now=Read_8255B();
if(now==pre)
return 1;
else return 0;
}
/*----------------------*/
/*GATE0置0函数*/
void SerPc0(void)
{
outb(PORT_C,STATE_8255C);
}
/*-----------------------*/
/*演奏函数*/
void play(unsigned char low,unsigned char high)
{
outb(CNT_0,low);
outb(CNT_0,high);
}
TC
.rar_
TC
6. **
编译
与调试**:使用
TC
的
编译
器进行
程序
构建,并利用其调试工具进行错误排查,这是学习过程中必不可少的技能。学生会学习如何设置断点、查看内存状态以及跟踪变量变化。 7. **实践项目**:可能的实践项目可能...
用
TC
实现串口通信 有实例
总结来说,用
TC
实现串口通信涉及到对
端口
的读写
操作
、串口参数的初始化、数据的发送与接收,以及可能的中断服务。这个过程需要对底层硬件
操作
有深入的理解,同时需要注意在不同
操作
系统环境下的兼容性问题。通过使用...
51-s
tc
-
tc
35发送接收
程序
通过S
TC
下载
程序
进行编程,我们可以实现单片机对
TC
35的控制,进而进行数据的发送和接收,这对于物联网应用、远程监控以及其他需要无线通信功能的项目来说非常有价值。在实际应用中,还需要注意电源管理、抗干扰设计...
TC
操作
笔记本 8259 5254源代码 带执行档
标题中的“
TC
操作
笔记本 8259 5254源代码 带执行档”揭示了这个压缩包包含的是与8259和8254定时计数器相关的源代码,并且能够在Turbo C (
TC
)
编译
环境下运行。这暗示我们即将探讨的是关于微处理器中断系统和计时器...
基于英飞凌
TC
297实现的安全管理单元(SMU)代码
在这个项目中,它被用来实现一个安全管理单元(SMU),该单元的主要功能是在检测到警告信号时执行
端口
紧急停止
操作
,以确保系统的安全性和稳定性。 首先,我们要关注的是`SMU_Emergency_Stop_Alarm.c`文件。这个...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章